2011-09-25 197 views
1

我正在尝试向HTTP服务器发送HTTP POST请求并获取响应。我试图发送与浏览器发送的请求完全相同的请求。当我搜索时,我检查了Chrome开发人员工具的请求和响应。据此,这是我的要求。向服务器发送HTTP POST请求并获得响应?

Request URL:http://www.google.com/hotelfinder/rpc 
Request Method:POST 
Status Code:200 OK  
request headers: 
POST /hotelfinder/rpc HTTP/1.1 
Host: www.google.com 
Connection: keep-alive 
Content-Length: 116 
Origin: http://www.google.com 
X-GWT-Module-Base: http://www.google.com/hotelfinder/static/ 
X-GWT-Permutation: A237247005BD7F571F547C07F4E1BA8D 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1 
Content-Type: application/json; charset=UTF-8 
Accept: */* 
Referer: http://www.google.com/hotelfinder/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: rememberme=true; --my cookie-- 
payload: 
[,[[,"hs","[,[,\"Las Vegas, NV\",\"2011-10-02\",1]\n]\n"] 
] 
,[,[[,"b_ca","101"] 
,[,"b_qu","0"] 
,[,"b_qc","1"] 
] 
] 
] 

我使用Apache HTTP客户端发送请求,但只是获取带有该Google顶部栏的页面。请帮助我做到这一点。

回答

2

打开the page在一个正常的网页浏览器,rightclick和查看源文件。这正是HttpClient也可以检索到的。你看到那堆JavaScript吗?在浏览器中禁用JavaScript,刷新页面。你现在看到你得到了相同的结果(只有谷歌顶部栏)?

换句话说,JavaScript是必需的。你必须自己解析,解释和执行JavaScript。 HttpClient没有这样做,它只是给你相同的,无论你的webbrowser检索,你可以看到查看源文件。你的HttpClient代码工作得很好。唯一的区别是你的浏览器能够解析,解释和执行JavaScript。

这就是说,我想知道你是否意识到你实际上以这种方式违反了terms of service。我建议寻找一个公共酒店查找器web服务API。这个问题之前已经被问到:Travel/Hotel API's?

+0

谢谢,你的回答对我有些意义。但只是忘记了JavaScript。我从chrome的网络请求中抓取了该http请求。有时它可能从页面中的JavaScript发送。我的观点是,这是一个http请求,在浏览器中,响应是一个结果列表(用gzip压缩)。所以我想如果我发送完全相同的请求到服务器,我应该得到确切的回应。 –

相关问题