Java HTTP POST с базовой авторизацией и перенаправлением - PullRequest
2 голосов
/ 18 мая 2011

Программа делает сообщение http с базовой авторизацией просто отлично, но когда сообщение завершено, страница перенаправляется на страницу успеха. Ошибка перенаправления из-за авторизации 401.

        final URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestProperty("Authorization", "basic " +base64);
        wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

Линия

rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

не удается из-за ошибки авторизации 401 ...

Я также попытался добавить

conn.setRequestProperty("Authorization", "basic " +base64);

после

wr.flush();

Я получаю ошибку «Уже подключен». Очевидно, что авторизация, которую я установил, не переходит к перенаправлению. Любые решения этой проблемы с благодарностью.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Вот рабочее решение для всех, у кого есть эта проблема.Еще раз спасибо Femi за предоставленную обходную идею.

URL url = new URL(page);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setInstanceFollowRedirects(false);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "basic " +base64);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP){
    url = new URL(conn.getHeaderField("Location"));
    conn = (HttpURLConnection)url.openConnection();
    conn.setRequestProperty("Authorization", "basic " +base64);
}
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
1 голос
/ 18 мая 2011

У вас есть 2 варианта, которые вы можете попробовать:

  1. Используйте setDefaultRequestProperty (см. http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setDefaultRequestProperty%28java.lang.String,%20java.lang.String%29) метод для установки заголовка авторизации.
  2. Отключите автоматическое перенаправление после: http://download.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#setInstanceFollowRedirects%28boolean%29 и сделайте это вручную.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...