2011-09-25 239 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壓縮)。所以我想如果我發送完全相同的請求到服務器,我應該得到確切的迴應。 –

相關問題