Сервер возвращает ошибку 500 только при вызове клиентом Java с использованием urlConnection / httpUrlConnection - PullRequest
1 голос
/ 15 февраля 2011

У меня очень странная проблема. Я пытаюсь вызвать сервлет (JSP) с HTTP GET и несколькими параметрами (http://mydomain.com/method?param1=test&param2=123). Если я вызываю его из браузера или через WGET в сеансе bash, он работает нормально. Однако, когда я делаю то же самое вызов в клиенте Java с использованием urlConnection или httpURLConnection, сервер возвращает ошибку 500.

Я перепробовал все, что нашел в Интернете, включая:

urlConn.setRequestProperty("Accept-Language", "en-us,en;q=0.5");

Ничего из того, что я пробовал, не помогло. К сожалению, у меня нет доступа к серверу, которому я звоню, поэтому я не вижу журналы.

Вот последний код:

private String testURLConnection() {
String ret = "";

String url = "http://localhost:8080/TestService/test";
String query = "param1=value1&param2=value2";

try {
    URLConnection connection = new URL(url + "?" + query).openConnection();
    connection.setRequestProperty("Accept-Charset", "UTF-8");
    connection.setRequestProperty("Accept-Language", "en-us,en;q=0.5");

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

    String line;

    StringBuilder content = new StringBuilder();
    while ((line = bufferedReader.readLine()) != null) {
        content.append(line + "\n");
    }
    bufferedReader.close();
    metaRet = content.toString();
    log.debug(methodName + " return = " + metaRet);
} catch (Exception ex) {
    log.error("Exception: " + ex);
    log.error("stack trace: " + getStackTrace(ex));
}

return metaRet;

}

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

К сожалению, у меня нет доступа к серверу, которому я звоню, поэтому я не вижу журналы.

К сожалению, журналы сервера были бы лучшим местом дляпоищите информацию о том, что является причиной внутренней ошибки 500.

В теле ответа также может содержаться некоторая информация;например, страница с ошибкой в ​​формате HTML, содержащая сообщение об ошибке и (если вам повезет) отформатированная трассировка стека.

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


Другой способ взглянуть на это состоит в том, что это ошибка сервера, а не клиента.Сервер должен быть в состоянии обработать любой запрос, который клиент отправляет на него.В ответе 500 говорится, что сервер не может.

Но, конечно же, сообщение «это ошибка сервера» не поможет вам решить проблему.

0 голосов
/ 18 октября 2013

У меня была такая же проблема, но, к счастью, у меня был доступ к журналам сервера. Это проблема конфигурации сервера.

Сервер выдаст это исключение: java.lang.IllegalStateException: слишком большая форма1105723> 200000

Это исправление находится в конфигурации причала на стороне сервера.

Со стороны клиента вы можете попробовать отправить данные в другой форме, отличной от application / www-x-formencoded, если ваш сервер позволяет.

...