首页 > 学院 > 开发设计 > 正文

httpclient 发送一个请求

2019-11-14 21:23:24
字体:
来源:转载
供稿:网友
httpclient 发送一个请求httpclient版本 4.1发送一个post请求
    public static JSONObject post(String url,JSONObject json){              HttpClient client = new DefaultHttpClient();              HttpPost post = new HttpPost(url);              JSONObject response = null;              try {                  StringEntity s = new StringEntity(json.toString());                  s.setContentEncoding("UTF-8");                  s.setContentType("application/json");                  post.setEntity(s);                                      HttPResponse res = client.execute(post);                   if(res.getStatusLine().getStatusCode() == HttpStatus.OK.value()){                       HttpEntity entity = res.getEntity();                       String charset = EntityUtils.getContentCharSet(entity);                       response = new JSONObject(new JSONTokener(new InputStreamReader(entity.getContent(),charset)));                   }               } catch (Exception e) {                   throw new RuntimeException(e);               }               return response;           }  

模拟提交form:

    private static HttpPost postForm(String url, Map<String, String> params){                    HttpPost httpost = new HttpPost(url);          List<NameValuePair> nvps = new ArrayList <NameValuePair>();                    Set<String> keySet = params.keySet();          for(String key : keySet) {              nvps.add(new BasicNameValuePair(key, params.get(key)));          }                      try {               log.info("set utf-8 form entity to httppost");               httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));           } catch (UnsupportedEncodingException e) {               e.printStackTrace();           }                      return httpost;       }  

get请求

    public static String get(String url) {             DefaultHttpClient httpclient = new DefaultHttpClient();             String body = null;                          log.info("create httppost:" + url);             HttpGet get = new HttpGet(url);             body = invoke(httpclient, get);                          httpclient.getConnectionManager().shutdown();                            return body;          }

发起一个post请求,设置超时:

需要注意各个版本设置超时的api都不相同。

还有需要注意的是3中超时:

1,连接超时:connectionTimeout指的是连接一个url的连接等待时间。

2,读取数据超时:soTimeout 指的是连接上一个url,获取response的返回等待时间

3,SocketTimeout :定义了Socket读数据的超时时间,即从服务器获取响应数据需要等待的时间

    public static String sendPostRequest(String url, String str, String contentType, String charset){//        HttpParams httpParams = new BasicHttpParams();//4.1版本//        HttpConnectionParams.setConnectionTimeout(httpParams, 5000);//建立连接超时时间,防止调用url为死链,消耗服务器io//        HttpConnectionParams.setSoTimeout(httpParams, 3000);// 响应超时//        CloseableHttpClient httpClient = new DefaultHttpClient();         RequestConfig.Builder requestBuilder = RequestConfig.custom();//4.3.5版本        requestBuilder = requestBuilder.setConnectTimeout(5000);        //requestBuilder = requestBuilder.setConnectionRequestTimeout(100);        HttpClientBuilder builder = HttpClientBuilder.create();        builder.setDefaultRequestConfig(requestBuilder.build());        CloseableHttpClient httpClient = builder.build();                HttpPost post = new HttpPost(url);         //RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();        //post.setConfig(requestConfig);        post.setHeader("Content-Type", contentType);         ResponseHandler<String> responseHandler = new BasicResponseHandler();         String response = null;        try {            post.setEntity(new StringEntity(str, charset));            long start = System.currentTimeMillis();            try {                response = httpClient.execute(post,responseHandler);             } catch (Exception ConnectionTimeoutException) {//建立连接超时异常                long p = System.currentTimeMillis() - start;                log.error("sendPostRequest has a ConnectionTimeoutException timeout=> "+ p +"  "+ url);            }finally{                //httpClient.getConnectionManager().shutdown();                post.releaseConnection();            }        } catch (Exception e) {            log.error("执行HTTP Post请求" + url + "时,发生异常!", e);        }        return response;    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表