我正在编写一个Java客户端,该客户端将POST到需要身份验证的HTTP服务器。
我必须至少支持以下三种身份验证方法:基本,摘要或协商。此外,POST可能非常大(超过2MB),因此我需要使用流式传输。
如HttpURLConnection所述
因此,我需要自己处理身份验证。我搜索了一次,然后再次搜索了一种使用已经编码的类的方法,但是没有找到...
我可以从here中选择所需的源(因为它们是GPLv2,带有Classpath异常)。这是正确的方法吗?
谢谢。
最佳答案
您是否需要输出流? HttpURLConnection
绝对肯定支持Authenticator
类的身份验证,请参阅:Http Authentication。
更新:如果没有Authenticator
,则可以通过向HTTP请求中添加额外的 header 来手动执行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();