如何处理身份验证 HTTP 通过 HttpURLConnection?

我正在编写客户 Java, 哪一个 POSTs 到服务器 HTTP, 这需要

验证

.

我必须至少维护以下三种身份验证方法: Basic, Digest 或者 Negotiate. 除了, POST 可能很大 /更多的 2 MB./, 因此,我需要使用流。
如何记录
http://download.oracle.com/jav ... /int/
启用输出流传输时,无法自动处理身份验证和重定向。 如果需要身份验证或重定向,则在读取答案符号时将发出 HttpRetryException.

所以我需要应对身份验证。 我正在寻找并再次寻找一种使用已经编码的类的方法 - 但我没有找到任何方式......

我只能从这里接受必要的来源 /因为他们是 GPLv2 从 Classpath 除了/. 这是正确的方式吗?

谢。
已邀请:

石油百科

赞同来自:

您需要流媒体输出数据吗?
HttpURLConnection

最肯定支持类身份验证
Authenticator

, 厘米。:
http://docs.oracle.com/javase/ ... .html
.

Update:

如果
Authenticator

不是一个选项,可以手动执行基本身份验证 HTTP, 通过向您的请求添加其他标题。 HTTP. 尝试以下代码 /未经验证/:


String userPassword = username + ":" + password;
String encoding = new sun.misc.BASE64Encoder//.encode/userPassword.getBytes///;
URLConnection uc = url.openConnection//;
uc.setRequestProperty/"Authorization", "Basic " + encoding/;
uc.connect//;

董宝中

赞同来自:

与评论有关 @Mat's :

这是我团队和我使用的一个例子 :


import org.apache.commons.codec.binary.Base64;

HttpGet getRequest = new HttpGet/endpoint/;
getRequest.addHeader/"Authorization", "Basic " + getBasicAuthenticationEncoding///;

private String getBasicAuthenticationEncoding// {

String userPassword = username + ":" + password;
return new String/Base64.encodeBase64/userPassword.getBytes////;
}


希望它会有所帮助!

要回复问题请先登录注册