使用Charles和SSL Apple推送地址

我必须确认,我的发送推送通知的PHP代码正在与代理。 我安装了Charles,我可以通过代理(127.0.0.1:8888)观看我所有的networkingstream量。

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

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:// wrapper而不是http://https://

stream_socket_*()函数不知道你正在实现HTTP,所以他们不使用http上下文选项 – 为了这个工作,你需要做的例如

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

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