【问题标题】:Send HTTP POST request to a server and get the response?向服务器发送 HTTP POST 请求并获得响应?
【发布时间】:2011-09-25 03:08:18
【问题描述】:

我正在尝试向 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 顶栏的页面。请帮我这样做。

【问题讨论】:

    标签: java html http networking


    【解决方案1】:

    在普通网络浏览器中打开the page,右键单击并查看源代码。这正是 HttpClient 也检索到的。你看到那一堆 JavaScript 了吗?在浏览器中禁用 JavaScript,刷新页面。您现在是否看到获得了相同的结果(仅 Google 顶栏)?

    换句话说,JavaScript 是必需的。您必须自己解析、解释和执行 JavaScript。 HttpClient 不这样做,它只是为您提供与您的网络浏览器检索的内容相同的内容,正如您在查看源代码中看到的那样。您的 HttpClient 代码运行良好。唯一的区别是您的网络浏览器能够解析、解释和执行 JavaScript。

    也就是说,我想知道您是否意识到您实际上以这种方式违反了他们的terms of service。我建议寻找公共酒店查找器网络服务 API。这个问题之前有人问过:Travel/Hotel API's?

    【讨论】:

    • 谢谢,您的回答对我来说有些道理。但忘了javascript。我从 chrome 的网络请求中获取了那个 http 请求。有时它可能从页面中的 javascript 发送。我的意思是,这是一个 http 请求,在浏览器中,响应是一个结果列表(用 gzip 压缩)。所以我想如果我向服务器发送完全相同的请求,我应该得到确切的响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2014-09-02
    相关资源
    最近更新 更多