Использование адресного объявления Charles и SSL Apple

Я должен подтвердить, что мой PHP-код для отправки push-уведомления работает с прокси-сервером. Я установил Чарльза, и я могу смотреть весь свой веб-трафик через прокси (127.0.0.1:8888).

Теперь я хотел бы посмотреть, правильно ли работает мой скрипт для push-уведомлений. У меня есть :

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); 

Я получаю свое уведомление, но я не вижу, что происходит в Чарльзе. Поэтому мой скрипт не использует прокси-сервер …

Ты знаешь почему ?

Это связано с тем, что вы передали контекст с параметрами 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.