将HTTP POST请求发送到服务器并获得响应?

时间:2011-09-25 03:08:19

标签: java html http networking

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

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顶部栏的页面。请帮我这样做。

1 个答案:

答案 0 :(得分:2)

在普通的网络浏览器中打开the page,右键单击查看源。这正是HttpClient还检索的内容。你看到那堆JavaScript吗?在浏览器中禁用JavaScript,刷新页面。你现在看到你得到相同的结果(只有Google顶部栏)?

换句话说,JavaScript是必需的。您自己要解析,解释和执行JavaScript。 HttpClient没有这样做,它只是给你与webbrowser检索的一样,就像你在 View Source 中看到的那样。你的HttpClient代码工作得非常好。唯一的区别是您的webbrowser能够解析,解释和执行JavaScript。

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