• 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 超时时间设置(转)

  • 相关阅读:
    com,jsj,service,Impl====新闻发布系统(9)
    com.jsj.service=====新闻发布系统(8)
    com.jsj.filter====新闻发布系统(7)
    com.jsj.dao.Impl====新闻发布系统(6)
    com.jsj.utils===新闻发布系统(5)
    最长公共子序列模板(LCS)和LICS模板
    输入输出优化
    zstu-3769 数回文子串
    最长回文子串Manacher算法模板
    HOJ 2678 Stars
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/7843507.html
Copyright © 2020-2023  润新知