httpclient請求返迴響應體,警示告"Going to buffer response body of large or unknown size"的解決方案

來源:互聯網
上載者:User

標籤:close   解決   tpc   res   ade   return   puts   blog   app   

 通過httpclient類比post請求,接收響應的時候報了這樣一個警告:

org.apache.commons.httpclient.HttpMethodBase - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

是由於返回的HTTP頭沒有指定contentLength,或者是contentLength大於上限(預設是1M);

HttpClient建議使用getResponseBodyAsStream()代替getResponseBody(),可避免getResponseBody()可能帶來的記憶體的耗盡問題。

代碼如下:

public static String postByTextString(String url, String text, String token) {        HttpClient httpClient = new HttpClient();        PostMethod postMethod = new PostMethod(url);        try {            StringRequestEntity entity = new StringRequestEntity(text, "text/plain", Constants.CHARSET_UTF8);            postMethod.setRequestEntity(entity);            postMethod.setRequestHeader("token", token);            httpClient.executeMethod(postMethod);            if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
          // 通過讀流的方式替代getResponseBodyAsString() InputStream inputStream = postMethod.getResponseBodyAsStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer stringBuffer = new StringBuffer(); String str; while((str = br.readLine()) != null){ stringBuffer.append(str); } String response = new String(stringBuffer); br.close();          // String response = new String(postMethod.getResponseBodyAsString()); return response; } else { return null; } } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { postMethod.releaseConnection(); } return null;

 

httpclient請求返迴響應體,警示告"Going to buffer response body of large or unknown size"的解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.