Httpclient超時timeout設置


 

一:連接超時:connectionTimeout

 

     1:指的是連接一個url的連接等待時間。

二:讀取數據超時:soTimeout

     1:指的是連接上一個url,獲取response的返回等待時間。

For example:

 // 設置連接時間
            client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
            client.getHttpConnectionManager().getParams().setSoTimeout(60000);
 /**
     * 消息發送處理.
     * HTTP發送方式
     * @param content 消息內容
     * @return 返回消息
     */
	private GeneralReturnInfo postHttpData(String content) {
        GeneralReturnInfo out = new GeneralReturnInfo();
        String result = "";
        PostMethod postMethod = new PostMethod(serviceUrl);
        
        try {
            postMethod.setParameter("content", content);

            HttpClient client = new HttpClient();
            client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
            // 設置連接時間
            client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
            client.getHttpConnectionManager().getParams().setSoTimeout(60000);
            int status = client.executeMethod(postMethod);
            if (status == HttpStatus.SC_OK) {
                result = postMethod.getResponseBodyAsString();
                if (StringUtils.isEmpty(result)) {
                	String msg="HTTP訪問失敗(返回報文為空)(" + serviceUrl + ").";
					System.err.println(msg);
                    throw new AdapterException(ErrorType.CLIENT_NET_ERROR, "", msg);
                }
                
                out = JSON.parseObject(result, GeneralReturnInfo.class);
            } else {
            	String msg="HTTP訪問:返回狀態不等於200(" + status + ")(" + serviceUrl + ")).";
                System.err.println(msg);
                throw new AdapterException(ErrorType.CLIENT_NET_ERROR, "", msg);
            }

        } catch (Exception e) {
        	
        	
            // 將新產生的例外封裝
            if (e instanceof AdapterException) {
                throw (AdapterException) e;
            } else if (e instanceof ConnectException) {
                System.err.println("HTTP訪問失敗(連接失敗)(" + serviceUrl + ")).");
                throw new AdapterException(ErrorType.CLIENT_NET_ERROR, e, "HTTP訪問失敗(連接失敗)(" + serviceUrl + ")).");
            } else if (e instanceof ConnectTimeoutException) {
                System.err.println("HTTP訪問失敗(連接超時)(" + serviceUrl + ")).");
                throw new AdapterException(ErrorType.CLIENT_NET_ERROR, e, "HTTP訪問失敗(連接超時)(" + serviceUrl + ")).");
            } else if (e instanceof SocketTimeoutException) {
                System.err.println("HTTP訪問失敗(訪問超時)(" + serviceUrl + ")).");
                throw new AdapterException(ErrorType.CLIENT_NET_ERROR, e, "HTTP訪問失敗(訪問超時)(" + serviceUrl + ")).");
            } else {
                System.err.println("HTTP訪問失敗(調用異常)(" + serviceUrl + ")).");
                throw new AdapterException(ErrorType.CLIENT_NET_ERROR, e, "HTTP訪問失敗(調用異常)(" + serviceUrl + ")).");
            }
        } finally {
            // 釋放連接
            postMethod.releaseConnection();
        }
        return out;
    }

 com.creditharmony.apporveadapter.core.client.ClientPoxy    第170行;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM