向服务器发送HTTP POST请求并获得响应?
问题描述:
我正在尝试向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顶部栏的页面。请帮助我做到这一点。
答
打开the page在一个正常的网页浏览器,rightclick和查看源文件。这正是HttpClient也可以检索到的。你看到那堆JavaScript吗?在浏览器中禁用JavaScript,刷新页面。你现在看到你得到了相同的结果(只有谷歌顶部栏)?
换句话说,JavaScript是必需的。你必须自己解析,解释和执行JavaScript。 HttpClient没有这样做,它只是给你相同的,无论你的webbrowser检索,你可以看到查看源文件。你的HttpClient代码工作得很好。唯一的区别是你的浏览器能够解析,解释和执行JavaScript。
这就是说,我想知道你是否意识到你实际上以这种方式违反了terms of service。我建议寻找一个公共酒店查找器web服务API。这个问题之前已经被问到:Travel/Hotel API's?
谢谢,你的回答对我有些意义。但只是忘记了JavaScript。我从chrome的网络请求中抓取了该http请求。有时它可能从页面中的JavaScript发送。我的观点是,这是一个http请求,在浏览器中,响应是一个结果列表(用gzip压缩)。所以我想如果我发送完全相同的请求到服务器,我应该得到确切的回应。 –