我必须向iOS设备发送推送通知。我的连接必须通过代理启用。我尝试了一切但没有成功。我有一个错误110连接超时。如果我只是尝试连接Apple推送地址,它正在使用cURL。我不知道问题出在哪里。代理配置? PHP stream_context错误的实现?
这是我的代码:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'certificate.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'my_passphrase');
stream_context_set_option($ctx, 'ssl', 'verify_peer', false);
stream_context_set_option($ctx, 'http', 'proxy', 'tcp://my-proxy.net:8080');
stream_context_set_option($ctx, 'http', 'request_fulluri', true);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err,$errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
var_dump($fp);
var_dump($err);
var_dump($errstr);
exit;
你有什么想法吗?
修改
可以直接链接到Squid吗?我刚刚发现代理正在运行Squid。
我也尝试使用fopen()
函数而不是stream_socket_client()
,但它似乎不允许使用ssl协议。
这是我的var_dump输出: bool(false)int(110)string(20)“连接超时”
我也有这个警告:警告:stream_socket_client():无法连接到/share/www/website/test.php中的ssl://gateway.sandbox.push.apple.com:2195(连接超时)在第22行
答案 0 :(得分:1)
可能只是您的代理不允许打开端口2195。
iPhone Push Notification Unable to Connect to the SSL Server
我猜你要么:
或
或
通过设置选项来完成:
// sets the proxy to go through
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// sets to use a tunnel proxy which most http proxies are
curl_setopt($ch, CURLOPT_HTTPTUNNELPROXY, $proxy);
完整测试代码here。
答案 1 :(得分:0)
在这篇文章中查看我的回复:Send Push Notification to APNS through proxy