php - 对外部 HTTPS 网页进行 POST 后如何获取数据?

标签 php javascript json post https

我需要以 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/

相关文章:

php 从另一个字符串中匹配一个字符串

php - 使用 Zend Framework 1.6.2 添加二阶字段时出现不明确错误

php - 使用 codeigniter 根据选定的 id 显示图像

javascript - 使用变量上传 Javascript 文件

javascript - 发出 HTTP 请求并将结果解析为 JSON

PHP 在 while 循环中计算两个值之间的差异

javascript - 如果 console.log 禁用,则登录 casper.js

javascript - Angular 路由配置在 1.2.3 中不起作用

java - 输入清理以不破坏 JSON 语法

json - 结合 tail -F 和 json