我需要以 JSON 格式向远程服务器中的 HTTPS 网页发送 POST 并接收 JSON 格式的答案。
要发送到远程服务器的数据是从 URL 中获取的(栏)<---用 PHP 完成
我的问题是发送此数据并接收答案。
我尝试使用 PHP 和 HTML 使用 cURL(php) 和 Submit(html) 制作它。
结果: 在 PHP 中我无法发送任何内容。 在 HTML 中,我可以提交数据,获得答案,但我无法在代码中捕获。
我使用 Wireshark 看到了答案,正如我所见,POST 是在协商协议(protocol)之后完成的,正如我所说,我收到了一个答案(我认为是由于 HTTPS 编码的)。
现在我需要在代码中接收该答案以生成 URL 链接,因此我正在考虑使用 Java 脚本。
我以前从未做过类似的事情。
如有任何建议,我们将不胜感激,谢谢。
<小时/>我使用以下代码,没有结果,但有 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 服务条款禁止通过 HTTP 请求直接使用 Google 位置服务器 (http://www.google.com/loc/json)。此服务只能通过 Geolocation API 访问。 ”
所以,我走错了路,从现在开始我将开始学习 Gears,以便应用 Gears API。
干杯!
最佳答案
如果您设置正确,PHP 就没有真正的理由不能为您执行 PHP 操作。
例如,它可能需要一个在客户端浏览器上设置的 cookie,而您的 PHP/curl 请求没有。
要进行正确的调试,请在 Firefox 中使用 HTTPFox 或 Firebug,它们会监视浏览器本身的请求,并可以显示实际数据,而不是wireshark捕获的加密垃圾。
当然,您可以使用客户端浏览器作为服务器的代理。浏览器发布到 HTTPS 服务器,获取响应,然后将该响应发送到您的服务器。但如果该数据“重要”并且不应该公开,那么客户端解决方案就是一个糟糕的解决方案。
关于php - 对外部 HTTPS 网页进行 POST 后如何获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5939046/