【发布时间】:2013-12-26 22:46:02
【问题描述】:
我正在尝试使用 java.net.HttpURLConnection 在 Java 中“欺骗”Firefox HTTP POST 请求。 我使用 Wireshark 检查发送的 HTTP 标头,所以我(希望)有可靠的信息来源,为什么 Java 结果与理想情况不匹配(使用 Firefox)。
我已将所有标头字段完全设置为 Firefox 通过 HTTP 发送的值,并注意到标头字段的顺序不一样。 Firefox 的输出如下:
POST ...
**Host**
User-Agent
Accept
Accept-Language
Accept-Encoding
Referer
Connection
Content-Type
Content-Length
当我让 wireshark 使用我在 Java 中的实现时,它给了我一个稍微不同的字段序列:
POST...
**User-Agent**
Accept
Accept-Language
Accept-Encoding
Referer
Content-Type
Host
Connection
Content-Length
所以基本上,我拥有所有字段,只是顺序不同。
我还注意到 Host 字段以不同的值发送:
www.thewebsite.com (Firefox) thewebsite.com (Java HttpURLConnection),尽管我使用 "www."
httpUrlConnection.setRequestProperty
我还没有分析 Wireshark 的字节输出,但我知道服务器在我的响应的标头字段中没有返回相同的 Location。
我的问题是:
(1) 是否可以控制请求中标头字段的顺序,如果可以,是否可以使用HttpURLConnection?如果没有,是否可以使用 Java 直接控制 HTTP 标头中的字节? [我不拥有服务器,所以我唯一希望让 POST 方法工作的唯一希望是通过我的应用程序伪装成 Firefox,服务器并不是很冗长,我唯一的信息是:Apache with PHP]
(2) 有没有办法解决上述的 setRequestProperty() 问题(“www”)?
(3) 还有什么重要的? (我是否需要关注底层,TCP ......?)
感谢任何cmets。
附言。我正在尝试模拟一种没有发送 cookie 的情况,以便我可以忽略这种影响。
【问题讨论】:
-
标题的顺序不重要。
-
谢谢。那么还有什么可以搞砸呢? TCP?
标签: java http post httpurlconnection