欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NoHttpResponseException異常解決優(yōu)化HttpClient配置以避免連接問題

 更新時間:2023年10月12日 09:23:33   作者:codecraft  
這篇文章主要為大家介紹了NoHttpResponseException異常解決,優(yōu)化HttpClient配置以避免連接問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

本文主要研究一下HttpClient的NoHttpResponseException

NoHttpResponseException

org/apache/http/NoHttpResponseException.java

/**
 * Signals that the target server failed to respond with a valid HTTP response.
 *
 * @since 4.0
 */
public class NoHttpResponseException extends IOException {
    private static final long serialVersionUID = -7658940387386078766L;
    /**
     * Creates a new NoHttpResponseException with the specified detail message.
     *
     * @param message exception message
     */
    public NoHttpResponseException(final String message) {
        super(HttpException.clean(message));
    }
}
NoHttpResponseException繼承了IOException,用于表示目標服務器沒有返回一個正常的http response

DefaultHttpResponseParser

org/apache/http/impl/conn/DefaultHttpResponseParser.java

public class DefaultHttpResponseParser extends AbstractMessageParser<HttpResponse> {
    private final Log log = LogFactory.getLog(getClass());
    private final HttpResponseFactory responseFactory;
    private final CharArrayBuffer lineBuf;
    //......
    @Override
    protected HttpResponse parseHead(
            final SessionInputBuffer sessionBuffer) throws IOException, HttpException {
        //read out the HTTP status string
        int count = 0;
        ParserCursor cursor = null;
        do {
            // clear the buffer
            this.lineBuf.clear();
            final int i = sessionBuffer.readLine(this.lineBuf);
            if (i == -1 && count == 0) {
                // The server just dropped connection on us
                throw new NoHttpResponseException("The target server failed to respond");
            }
            cursor = new ParserCursor(0, this.lineBuf.length());
            if (lineParser.hasProtocolVersion(this.lineBuf, cursor)) {
                // Got one
                break;
            } else if (i == -1 || reject(this.lineBuf, count)) {
                // Giving up
                throw new ProtocolException("The server failed to respond with a " +
                        "valid HTTP response");
            }
            if (this.log.isDebugEnabled()) {
                this.log.debug("Garbage in response: " + this.lineBuf.toString());
            }
            count++;
        } while(true);
        //create the status line from the status string
        final StatusLine statusline = lineParser.parseStatusLine(this.lineBuf, cursor);
        return this.responseFactory.newHttpResponse(statusline, null);
    }
    protected boolean reject(final CharArrayBuffer line, final int count) {
        return false;
    }
}
DefaultHttpResponseParser繼承了AbstractMessageParser,其parseHead方法讀取sessionBuffer,若該數據為空則拋出NoHttpResponseException("The target server failed to respond")

小結

NoHttpResponseException繼承了IOException,用于表示目標服務器沒有返回一個正常的http response,一般是目標服務器負載太高處理不過來因而斷開了連接,也有可能是目標服務器把這個空閑連接關閉了,而HttpClient則繼續(xù)用這個連接發(fā)送請求則會讀取不到正常的reponse,因而拋出NoHttpResponseException。大多數情況下,可以通過重試解決。另外針對因為keep-alive超時斷開的,可以配置HttpClient的connTimeToLive值小于服務端的keepAlive值(通常是60s)。

doc

以上就是NoHttpResponseException異常解決優(yōu)化HttpClient配置以避免連接問題的詳細內容,更多關于HttpClient NoHttpResponseException的資料請關注腳本之家其它相關文章!

相關文章

  • 解決SpringBoot 測試類無法自動注入@Autowired的問題

    解決SpringBoot 測試類無法自動注入@Autowired的問題

    這篇文章主要介紹了解決SpringBoot 測試類無法自動注入@Autowired的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 解決SpringBoot跨域的三種方式

    解決SpringBoot跨域的三種方式

    前后端分離是目前的趨勢,解決跨域問題也是老生常談的話題了,我們了解一下什么是域和跨域。域:協(xié)議 + 域名 + 端口;三者完全相同則為同域,反之有其一不同均為不同域。跨域請求:當前【發(fā)起請求】的域和【請求指向】的域屬于不同域時,該次請求稱之為跨域請求
    2021-06-06
  • java圖片對比度調整示例代碼

    java圖片對比度調整示例代碼

    這篇文章主要給大家介紹了關于java圖片對比度調整的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • Java使用設計模式中的代理模式構建項目的實例展示

    Java使用設計模式中的代理模式構建項目的實例展示

    這篇文章主要介紹了Java使用設計模式中的代理模式構建項目的實例展示,代理模式中的代理對象可以在客戶端和目標對象之間起到中介的作用,需要的朋友可以參考下
    2016-05-05
  • Idea的Generate Sources無法生成QueryDSL問題及解決方法

    Idea的Generate Sources無法生成QueryDSL問題及解決方法

    這篇文章主要介紹了解決Idea的Generate Sources無法生成QueryDSL問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Java中調用Python的實現示例

    Java中調用Python的實現示例

    本文主要介紹了Java中調用Python的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • 淺談JVM之java class文件的密碼本

    淺談JVM之java class文件的密碼本

    一切的一切都是從javac開始的。從那一刻開始,java文件就從我們肉眼可分辨的文本文件,變成了冷冰冰的二進制文件。變成了二進制文件是不是意味著我們無法再深入的去了解java class文件了呢?答案是否定的。本文將詳細介紹JVM之java class文件的密碼本。
    2021-06-06
  • 如何通過XML方式配置并實現Mybatis

    如何通過XML方式配置并實現Mybatis

    這篇文章主要介紹了如何通過XML方式配置并實現Mybatis,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 約定優(yōu)于配置_動力節(jié)點Java學院整理

    約定優(yōu)于配置_動力節(jié)點Java學院整理

    以前做項目,總是寫Ant配置文件,滿足于自己更靈活的配置,而沒有去思考,這么做到底值不值得
    2017-08-08
  • Java串口通信入門

    Java串口通信入門

    串口通信是一種用于在計算機和外部設備之間進行數據交換的通信方式,本文主要介紹了Java串口通信入門,并提供一個簡單的示例來演示如何在Java中進行串口通信,感興趣的可以了解一下
    2023-11-11

最新評論