php - 使用 Charles 和 SSL Apple 推送地址

标签 php ios proxy push-notification charles-proxy

我必须确认我的用于发送推送通知的 PHP 代码正在使用代理。我安装了 Charles,我可以通过代理 (127.0.0.1:8888) 查看我所有的网络流量。

现在我想看看我的脚本是否能正确处理推送通知。 我有:

stream_context_set_option($ctx, 'http', 'proxy', 'tcp://127.0.0.1:8888');
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err,$errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

我收到推送通知,但看不到 Charles 中发生了什么。所以我的脚本没有使用代理...

你知道为什么吗?

最佳答案

这是因为您将带有 http 选项的上下文传递给 stream_socket_client() - 更重要的是您使用了 ssl:// 包装器而不是 http://https://

stream_socket_*() 函数不知道您正在实现 HTTP,因此它们不使用 http 上下文选项 - 为了使其正常工作,您需要做例如

$fp = fopen('https://gateway.sandbox.push.apple.com:2195/path/to/file', 'r', false, $ctx);

无论如何,这可能是一个更好的主意,因为您不太可能需要像手动实现 HTTP 那样为 Apple API 提供的精细控制。

关于php - 使用 Charles 和 SSL Apple 推送地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154235/

相关文章:

ios - 在xcode 7中测试导航器说(空)

ios - Backendless - 如何从 'Data' 获取对象

java - 如何在代理后面使用 Apache Olingo

node.js - 无法创建cordova项目,代理问题?

c# - 序列化代理模式解决了什么序列化模式没有解决的问题?

php - 从 Amazon Alexa 技能包发送 HTTP post 请求

php - 在 PHP 中生成 UUID 的最有效方法是什么?

php - mysql中多次提交更改记录

php - 如何使用 PHP 删除字符串中的倒数第 7 个和第 8 个字符?

ios - Swift 后台执行