Мне нужно сделать POST в формате JSON на веб-странице HTTPS на удаленном сервере и получить ответ в формате JSON.
Данные, отправляемые на удаленный сервер, берут его из URL (bar) <— Выполнено в PHP
Моя проблема заключается в отправке этих данных и получении ответа.
Я попытался сделать это на PHP и HTML, используя cURL (php) и submit (html).
Результаты: В PHP я ничего не могу отправить. В HTML я могу отправить данные, получить ответ, но я не могу поймать в своем коде.
Я вижу ответ, используя Wireshark, и, как я вижу, POST делает это после протокола переговоров, и, как я уже сказал, я получаю ответ (закодированный из-за HTTPS, я думаю).
Теперь мне нужно получить этот ответ в моем коде, чтобы создать ссылку URL-адреса, поэтому я рассматриваю возможность использования Java Script.
Я никогда раньше ничего подобного не делал.
Любое предложение будет оценено, спасибо.
Я использую следующий код с результатом не 20 секунд задержки до пустой страницы.
<?php $url = 'https://www.google.com/loc/json'; $body = '{"version":"1.1.0","cell_towers":[{"cell_id":"48","location_area_code":1158,"mobile_country_code":752,"mobile_network_code.":7,"age":0,"signal_strength":-71,"timing_advance":2255}]}'; $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_POSTFIELDS, $body); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); //curl_setopt($c, CURLOPT_HTTPHEADERS,'Content-Type: application/json'); $page = curl_exec($c); echo($page); //print_r($page); curl_close($c); ?>
Новая информация
Я просто получаю новую очень важную информацию
« Условия обслуживания Gears запрещают прямое использование сервера местоположений Google (http://www.google.com/loc/json) через HTTP-запросы. Доступ к этой услуге можно получить только через API геолокации ».
Итак, я шел неправильно, и теперь я начну узнавать о Gears, чтобы применить API Gears.
Ура!
Нет никакой реальной причины, по которой PHP не может сделать PHP для вас, если вы правильно настроите ситуацию.
Например, может потребоваться куки-файл, который он установил в браузере клиента в какой-то момент, который у вашего PHP / curl-запроса нет.
Для правильной отладки используйте HTTPFox или Firebug в Firefox, которые отслеживают запросы из самого браузера и могут отображать фактические данные, а не зашифрованный мусор, который будет захватывать wirehark.
Конечно, вы можете использовать клиентский браузер как своего рода прокси для своего сервера. Сообщения браузера на сервер HTTPS, получает ответ, а затем отправляют этот ответ на ваш сервер. Но если эти данные «важны» и не должны подвергаться воздействию, то решение на стороне клиента является плохим.