相关疑难解决方法(0)

如何使用java.net.URLConnection来触发和处理HTTP请求

java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.

该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.

那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?

java http urlconnection httprequest httpurlconnection

1903
推荐指数
11
解决办法
100万
查看次数

使用ntlm身份验证时出现Java URLConnection错误,但仅限Linux和Java 7

我正在尝试打开与NTLM身份验证方案保护的URL的http连接.当我们使用Java 6时,这段代码已经正常工作了2年.我写了一个小的java程序,它访问该特定的url,使测试用例尽可能简单.

问题是我无法使程序在Linux上运行,并且在使用JDK 7的版本时.Java尝试20次访问URL,然后我收到一个错误,告诉我服务器重定向次数太多.它适用于linux和JDK 6,以及带有JDK 6或7的Windows 7.

我检查并尝试了此处列出的解决方案(和许多其他人):获取"java.net.ProtocolException:服务器重定向次数太多"错误.它没用.我还要补充一点,当从浏览器访问URL时,我可以看到没有涉及cookie.

以下是我尝试过的os/java版本的确切细节:

成功:

  • Windows 7:Java(TM)SE运行时环境(版本1.7.0_15-b03)(64位)
  • Windows 7:Java(TM)SE运行时环境(版本1.7.0_10-b18)(64位)
  • Windows 7:Java(TM)SE运行时环境(版本1.6.0_33-b04)(64位)
  • Redhat enterprise linux 6.4:Java(TM)SE运行环境(版本1.6.0_33-b04)(64位)

失败:

  • Redhat enterprise linux 6.4:Java(TM)SE运行时环境(版本1.7.0-b147)(64位)
  • Redhat enterprise linux 6.4:Java(TM)SE运行时环境(版本1.7.0_05-b06)(64位)
  • Redhat enterprise linux 6.4:Java(TM)SE运行时环境(版本1.7.0_13-b20)(64位)
  • Redhat enterprise linux 6.4:Java(TM)SE运行时环境(版本1.7.0_15-b03)(64位)

当程序工作时,我看到使用的身份验证方法和我尝试下载的文档作为输出:

Scheme:Negotiate
Scheme:ntlm
.... document content ....
Done
Run Code Online (Sandbox Code Playgroud)

当它失败时,我有以下输出:

Scheme:Negotiate
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
Scheme:ntlm
java.net.ProtocolException: Server redirected too many  times (20)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1635)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) …
Run Code Online (Sandbox Code Playgroud)

java authentication ntlm urlconnection

11
推荐指数
1
解决办法
2万
查看次数