У меня странная проблема с HttpURLConnection на Android (уровень API 7). Я использую базовую аутентификацию, настроенную с использованием аутентификатора по умолчанию, например:
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 с длиной содержимого равной 0.
Кто-нибудь видел это раньше, и как мне это исправить?
Спасибо,
Sean