zoukankan      html  css  js  c++  java
  • 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 超时时间设置(转)

  • 相关阅读:
    type( ) 和 isinstance( )
    el-input-number element计数器设置自定义小数位数
    Electron-Vue起步
    SmartGit破解使用的个人方法
    js 之 数组去重
    Vue动态class
    vue项目如何(友好的)刷新当前页
    Promise()与链式执行
    Vue过渡&循环切换&放大缩小动画
    css Margin塌陷问题(margin属性撑不开盒子)
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/7843507.html
Copyright © 2011-2022 走看看