Почему Java HttpURLConnections с методами POST вызывает Http 500 Error в ответ? - PullRequest
0 голосов
/ 20 декабря 2011

Я пишу приложение, которое будет мигрировать пакеты JBoss Guvnor, используя его REST API. По сути, он читает все активы через запросы REST GET и записывает их в другой Guvnor, используя запросы PUT / POST.

Вот небольшой фрагмент моего метода, который выполняет POST:

HttpURLConnection conn = (HttpURLConnection) path.getURL()
    .openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type", path.getType().getAcceptMIME());
conn.setDoOutput(true);
conn.setDoInput(true);

conn.setRequestProperty("Authorization", "Basic " + authString);

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
        conn.getOutputStream()));
bw.write(content);
bw.flush();

conn.connect();

Работает, все ресурсы переносятся, но каждый раз, когда conn.getResponseCode() возвращает 500, а conn.getResponseMessage() возвращает внутреннюю ошибку сервера.

Я довольно новичок в работе HTTP-запросов с Java, и я не знаю, должно ли это происходить, почему это происходит и происходит ли это из-за какой-то ошибки в моем фрагменте или на стороне сервера (Guvnors) ошибка?

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Нет ничего плохого в вашем коде. Ответ 500 означает (должен означать), что сервер столкнулся с внутренней проблемой. Вполне возможно, что что-то необычное в ваших запросах вызывает проблему, но это также может быть что-то совершенно не связанное.

Я предлагаю вам сделать следующее:

  • Проверьте журналы на стороне сервера на наличие ошибок / исключений, которые совпадают с ошибочными запросами.

  • Открыть, прочитать и записать поток ошибок HttpUrlConnection. Это может иметь более информативное сообщение об ошибке.

1 голос
/ 20 декабря 2011

Ваш код на стороне клиента выглядит нормально. Стандартный HttpUrlConnection всегда выдает исключение при попытке чтения из входного потока, когда код ответа не является последовательностью 2xx. Код ответа 500 означает, что на стороне сервера произошла непредвиденная ошибка. Обратитесь к журналам сервера. Вы найдете причину там.

Удачи.

...