簡體   English   中英

僅當Java客戶端使用urlConnection / httpUrlConnection調用服務器時,服務器才返回500錯誤

[英]Server returns 500 error only when called by Java client using urlConnection/httpUrlConnection

我有一個非常奇怪的問題。 我正在嘗試使用HTTP GET和一些參數(http://mydomain.com/method?param1=test&param2=123)調用servlet(JSP)。 如果我通過瀏覽器或在bash會話中通過WGET調用它,則可以正常工作。 但是,當我使用urlConnection或httpURLConnection在Java客戶端中進行完全相同的調用時,服務器返回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;

}

任何幫助將不勝感激!

不幸的是,我無權訪問正在呼叫的服務器,因此看不到日志。

不幸的是,服務器日志是查找引起500內部錯誤的信息的最佳位置。

響應的主體中可能還包含一些信息; 例如,包含錯誤消息的HTML格式錯誤頁面,以及(如果您幸運的話)格式化堆棧跟蹤。

如果沒有,您可能不得不轉儲針對有效案例和無效案例的請求標頭,並嘗試找出它們之間的區別。 然后,通過反復嘗試消除差異,直到找到導致問題的原因。


另一種看待這種情況的方式是服務器的問題,而不是客戶端的問題。 服務器應該能夠處理客戶端向它拋出的任何請求。 500響應表示服務器無法。

但是,當然,說“這是服務器的錯誤”並不能幫助您解決問題。

我有同樣的問題,但幸運的是我可以訪問服務器日志。 這是服務器的碼頭配置問題。

服務器將給出以下異常:java.lang.IllegalStateException:窗體太大1105723> 200000

此修復程序是在服務器端的碼頭配置中。

如果服務器允許,您可以從客戶端嘗試以application / www-x-formencoded以外的其他形式發送數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM