java使用HttpClient


HttpClient常用的包有兩個

org.apache.http.client以及org.apache.commons.httpclient

我常用的是org.apache.http.client。

HttpClient在4.3版本以后聲明HttpClient的方法和以前略有區別,不再是直接聲明new DefaultHttpClient() .

參考下文:

new DefaultHttpClient過時處理建議和HTTP調用后關閉流處理

HttpClient 4.5.2版本設置連接超時時間-CloseableHttpClient設置Timeout

JAVA發送HttpClient請求及接收請求結果過程

HttpClient使用詳解

 

代碼如下:

 

    public static void sendHttpAudit(OAApplicationModule am, String type, 
                                   String entityMappingId, String param) {
        System.out.println(System.currentTimeMillis());

        String oaRestfulServiceUrl = null;
//        am.getOADBTransaction().getProfile("");
          oaRestfulServiceUrl =  "http://xxx.xxx.xxx.xxx:8090/api/Service/submitXXX";
          
//        RequestConfig requestConfig = 
//            RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(1000).setSocketTimeout(5000).build();
        RequestConfig requestConfig = 
            RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(1000).build();   
        CloseableHttpClient httpclient = null;
         
        CloseableHttpResponse h_response = null;
        
        try {
            httpclient =   HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
//            httpclient = HttpClientBuilder.create().build();
            
            HttpPost postMethod = new HttpPost(oaRestfulServiceUrl);
//            postMethod.setConfig(requestConfig);
            postMethod.setHeader("User-Agent", 
                                 "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36");
            postMethod.setHeader("Referer", oaRestfulServiceUrl);
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            //200_ifaceCode 200表示為EBS系統調用RESTFUL服務。
            params.add(new BasicNameValuePair("type",  type));            
            params.add(new BasicNameValuePair("param", param));
            //添加參數
            postMethod.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
            h_response = httpclient.execute(postMethod);
            HttpEntity repEntity = h_response.getEntity();

            int statusCode = h_response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                postMethod.abort();
                procProcessError(am, entityMappingId, String.valueOf(statusCode), EntityUtils.toString(repEntity, "UTF-8") );
                throw new OAException("HttpClient,error status code :" + 
                                      statusCode);
            }
            String content = EntityUtils.toString(repEntity, "UTF-8");
            System.out.println(content);
            JSONObject json = JSON.parseObject(content);
            String retCode = json.getString("returnCode");
            String retMsg   = json.getString("returnMsg");
            procProcessError(am, entityMappingId, retCode, retMsg );
            if (!"000000".equals(retCode)) {
                System.out.println("  error  " +retMsg );
                throw new OAException("接口服務處理異常" + 
                                      json.getString("returnMsg"));
            } else {
                changeStatusInprocess(am, entityMappingId);
            }
        } catch (ConnectTimeoutException e) {
            procProcessError(am, entityMappingId, "ConnectTimeoutException", e.getMessage() );
        
            System.out.println(" ConnectTimeoutException " + 
                               System.currentTimeMillis());
            e.printStackTrace();
            throw new OAException("接口服務處理異常 ConnectTimeoutException " + 
                                  e.getMessage());
        } catch (SocketTimeoutException e) {
            procProcessError(am, entityMappingId, "SocketTimeoutException", e.getMessage() );
            System.out.println(" SocketTimeoutException " + 
                               System.currentTimeMillis());
            e.printStackTrace();
            throw new OAException("接口服務處理異常 SocketTimeoutException " + 
                                  e.getMessage());
        } catch (Exception e) {
            procProcessError(am, entityMappingId, "Exception", e.getMessage() );
            System.out.println("Exception " + System.currentTimeMillis());
            e.printStackTrace();
            throw new OAException("接口服務處理異常 Exception " + e.getMessage());
        } finally {
            if (h_response != null) {
                try {
                    h_response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (httpclient != null) {
                try {
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

 

 

 

 

org.apache.commons.httpclient參考如下

httpClient 超時時間設置(轉)


免責聲明!

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



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