簡體   English   中英

Java HttpURLConnection請求拋出帶有無效Http響應的IOException

[英]Java HttpURLConnection request throwing IOException with Invalid Http response

我正在使用Java 8發出POST請求,如下所示:

URL url = new URL("http://target.server.com/doIt");
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;

byte[] soapBytes = soapRequest.getBytes();
httpConn.setRequestProperty("Host", "target.host.com");
httpConn.setRequestProperty("Content-Length", soapBytes.length+"");
httpConn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
httpConn.setRequestMethod("POST");
httpConn.setConnectTimeout(5000);
httpConn.setReadTimeout(35000);
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
OutputStream out = httpConn.getOutputStream();
out.write(soapBytes);
out.close();

int statusCode;
try {
    statusCode = httpConn.getResponseCode();
} catch (IOException e) {
    InputStream stream = httpConn.getErrorStream();
    if (stream == null) {
        throw e;
    } else {
        // this never happens
    }
}

我的soap請求包含一個文檔ID,目標服務器(該主機托管我不擁有或無法訪問的第三方服務)將返回一個與提供的ID相匹配的PDF文檔。

在大多數情況下,服務器會返回PDF文檔,有時在文檔不可用時狀態碼為500。 但是,有時對getResponseCode()的調用會引發帶有“無效的Http響應”的IOException。

我認為無論發生什么情況,服務器總是會有一些響應代碼返回。

  • 這是否意味着服務器將返回與HTTP響應的預期格式不匹配的完整垃圾?
  • 有沒有辦法獲得有關實際響應的更多信息?
  • 有沒有辦法檢索原始文本回復(如果有)?

正如AxelH指出的那樣,與遠程服務器連接時肯定出了點問題,在這種情況下,您只是無法獲得有效的響應。

如果您在測試環境中,則可以在TCP級別 (而不是HTTP級別)監視連接:在客戶端和遠程服務器之間放置一個監視器,該監視器監視兩個對等方之間交換的所有TCP通信。 如果您使用的是Eclipse,則可以創建一個TCP監視器

暫無
暫無

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

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