我在Android(API级别7)上使用HttpURLConnection时遇到了一些奇怪的问题。我正在使用基本身份验证,使用默认身份验证器进行设置,如下所示:
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
});
我正在按如下方式提出标准要求:
public InputStream put(String type, String name, String xml){
try{
String urlString = this.getURLString(type,name);
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(
urlConnection.getOutputStream());
out.write(xml);
out.close();
urlConnection.getInputStream();
urlConnection.disconnect();
return null;
}
catch(Exception e){
Log.e(TAG,e.getMessage());
return urlConnection.getErrorStream();
}
}
数据包跟踪显示内容随HTTP请求一起发送。然后,我从服务器收到401 Unauthorized,并重新发送响应。这次是按照我的预期发送凭据,但不再发送内容。它现在是一个空白的PUT请求,其Content-Length为0。
之前有没有人见过这个,我该如何解决?
谢谢, 肖恩
答案 0 :(得分:1)
最终通过不使用Authenticator解决了这个问题,而是手动将基本授权标头添加到HttpURLConnection。