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

时间:2011-05-09 15:26:04

标签: php javascript json post https

我需要以JSON格式将POST发送到远程服务器中的HTTPS网页,并以JSON格式接收答案。

要发送到远程服务器的数据是从URL(bar)< ---在PHP完成

中获取的数据

我的问题是发送这些数据并收到答案。

我尝试在PHP中使用cURL(php)和提交(html)进行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服务条款禁止通过HTTP请求直接使用Google位置服务器(http://www.google.com/loc/json)。此服务只能通过Geolocation API访问。

所以,我走错了方向,从现在起我将开始学习Gears以应用Gears API。

干杯!

1 个答案:

答案 0 :(得分:0)

如果你正确设置,PHP没有理由不能为你做PHP。

例如,它可能需要在某个时刻在客户端浏览器上设置的cookie,这是您的PHP / curl请求所没有的。

要进行正确的调试,请在Firefox中使用HTTPFox或Firebug,它可以监控浏览器内部的请求,并可以显示实际数据,而不是wireshark将捕获的加密垃圾。

当然,您可以将客户端浏览器用作服务器的一种代理。浏览器发布到HTTPS服务器,获得响应,然后将该响应发送到您的服务器。但是,如果该数据“重要”且不应公开,那么客户端解决方案就不好了。