Httpclient超時timeout設置

 

一:鏈接超時:connectionTimeoutapp

 

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

二:讀取數據超時:soTimeouturl

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

For example:get

 // 設置鏈接時間
            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行;it

相關文章
相關標籤/搜索