• java发送http请求,get,post,delete


    package com.odianyun.example.business.common.utils;

    import com.alibaba.fastjson.JSON;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.ssl.SSLContextBuilder;
    import org.apache.http.ssl.TrustStrategy;
    import org.apache.http.util.EntityUtils;

    import javax.net.ssl.SSLContext;
    import java.io.IOException;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import java.util.*;

    /**
    * 模拟http请求工具类
    *
    * @author matao
    * @date 2016年7月14日
    */
    public class HttpClientUtils {
    private static CloseableHttpClient httpClient = createSSLClientDefault();

    static int time=2000;
    /**
    * 发送GET请求
    *
    * @author matao
    * @date 2016年7月19日
    */
    public static String sendGet(String url) {
    String responseContent = "";

    HttpGet httpGet = new HttpGet(url);

    try {
    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(time).setConnectionRequestTimeout(time).setSocketTimeout(time).build();
    httpGet.setConfig(requestConfig);
    HttpResponse response = httpClient.execute(httpGet);

    if (response == null) {
    return responseContent;
    }

    // 获得响应实体
    HttpEntity resEntity = response.getEntity();
    // 获得状态码
    int statusCode = response.getStatusLine() == null ? 0 : response.getStatusLine().getStatusCode();
    // 获得相应内容
    if (resEntity != null && statusCode == 200) {
    responseContent = EntityUtils.toString(response.getEntity(), "UTF-8");
    }
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    return responseContent;
    }

    /**
    * 发送post数据类型为form-data
    * @param url
    * @param map
    * @return
    * @throws Exception
    */
    public static String doPost(String url, HashMap<String, String> map) throws Exception {
    String result = "";
    CloseableHttpClient client = null;
    CloseableHttpResponse response = null;
    RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(550000).setConnectTimeout(550000)
    .setConnectionRequestTimeout(550000).setStaleConnectionCheckEnabled(true).build();
    client = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
    // client = HttpClients.createDefault();
    URIBuilder uriBuilder = new URIBuilder(url);
    HttpPost httpPost = new HttpPost(uriBuilder.build());
    httpPost.setHeader("Connection", "Keep-Alive");
    httpPost.setHeader("Charset", "UTF-8");
    httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
    Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    while (it.hasNext()) {
    Map.Entry<String, String> entry = it.next();
    NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
    params.add(pair);
    }
    httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
    try {
    response = client.execute(httpPost);
    if (response != null) {
    HttpEntity resEntity = response.getEntity();
    if (resEntity != null) {
    result = EntityUtils.toString(resEntity, "UTF-8");
    }
    }
    } catch (ClientProtocolException e) {
    throw new RuntimeException("创建连接失败" + e);
    } catch (IOException e) {
    throw new RuntimeException("创建连接失败" + e);
    }

    return result;

    }

    public static String doDelete(String data, String url) throws IOException {
    CloseableHttpClient client = null;
    com.odianyun.example.business.common.utils.HttpDeleteWithBody httpDelete = null;
    String result = null;
    try {
    client = HttpClients.createDefault();
    httpDelete = new com.odianyun.example.business.common.utils.HttpDeleteWithBody(url);

    httpDelete.addHeader("Content-type","application/json; charset=utf-8");
    httpDelete.setHeader("Accept", "application/json; charset=utf-8");
    httpDelete.setEntity(new StringEntity(data));

    CloseableHttpResponse response = client.execute(httpDelete);
    HttpEntity entity = response.getEntity();
    result = EntityUtils.toString(entity);

    if (200 == response.getStatusLine().getStatusCode()) {

    }
    } catch (Exception e) {
    } finally {
    client.close();
    }
    return result;

    }




    public static String sendPost(String url, Object params) {
    // 响应内容
    String responseContent = "";

    HttpPost post = new HttpPost(url);

    try {
    // 设置请求实体
    StringEntity reqEntity = new StringEntity(JSON.toJSONString(params), "utf-8");
    reqEntity.setContentEncoding("UTF-8");
    reqEntity.setContentType("application/json");
    post.setEntity(reqEntity);



    // 发送请求,返回响应对象
    HttpResponse response = httpClient.execute(post);

    if (response == null) {
    return responseContent;
    }

    // 获得响应实体
    HttpEntity resEntity = response.getEntity();
    // 获得状态码
    int statusCode = response.getStatusLine() == null ? 0 : response.getStatusLine().getStatusCode();
    // 获取响应内容
    if (resEntity != null && statusCode == HttpStatus.SC_OK) {
    responseContent = EntityUtils.toString(resEntity, "UTF-8");
    }
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }catch (Exception ec){
    ec.printStackTrace();
    }

    return responseContent;
    }


    public static String sendFormPost(String url, String params) {
    // 响应内容
    String responseContent = "";

    HttpPost post = new HttpPost(url);

    try {

    // 设置请求实体
    StringEntity reqEntity = new StringEntity(params, "utf-8");
    reqEntity.setContentEncoding("UTF-8");
    reqEntity.setContentType("application/x-www-form-urlencoded");
    post.setEntity(reqEntity);



    // 发送请求,返回响应对象
    HttpResponse response = httpClient.execute(post);

    if (response == null) {
    return responseContent;
    }

    // 获得响应实体
    HttpEntity resEntity = response.getEntity();
    // 获得状态码
    int statusCode = response.getStatusLine() == null ? 0 : response.getStatusLine().getStatusCode();
    // 获取响应内容
    if (resEntity != null && statusCode == HttpStatus.SC_OK) {
    responseContent = EntityUtils.toString(resEntity, "UTF-8");
    }
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }catch (Exception ec){
    ec.printStackTrace();
    }

    return responseContent;
    }

    /**
    * 创建HttpClient对象(用于发送https请求)
    *
    * @author matao
    * @date 2016年7月14日
    */
    public static CloseableHttpClient createSSLClientDefault() {
    try {
    TrustStrategy trustStrategy = new TrustStrategy() {
    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    return true;
    }
    };

    SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, trustStrategy).build();
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
    return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    } catch (KeyManagementException e) {
    e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (KeyStoreException e) {
    e.printStackTrace();
    }

    return HttpClients.createDefault();
    }

    public static void main(String[] args) {
    String result = sendFormPost("https://www.XXX.com/forecom/login/ajax_b2b.shtml","username=1&password=1");

    System.out.println(result);
    }

    }
    上面的代码可以发送http的get以及post,如果需要发送delete则需要下面的类
    package com.odianyun.example.business.common.utils;
    
    /**
     * @ Author     :kxs.
     * @ Date       :Created in 14:30 2020/7/22
     * @ Description:${description}
     * @ Modified By:
     * @Version: $version$
     */
    import java.net.URI;
    
    import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
    
    public class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase{
        public static final String METHOD_NAME = "DELETE";
    
        /**
         * 获取方法(必须重载)
         *
         * @return
         */
        @Override
        public String getMethod() {
            return METHOD_NAME;
        }
    
        public HttpDeleteWithBody(final String uri) {
            super();
            setURI(URI.create(uri));
        }
    
        public HttpDeleteWithBody(final URI uri) {
            super();
            setURI(uri);
        }
    
        public HttpDeleteWithBody() {
            super();
        }
    
    }

     发送post请求form-data格式的请求需要将对象转为Map<String, String>,参考链接:https://www.cnblogs.com/mm962464/p/13363313.html

  • 相关阅读:
    二叉树的序列化与反序列化
    寻找重复的子树
    [ABC216H] Random Robots
    Codeforces Round #741 (Div. 2)
    [Gym 102798K] Tree Tweaking
    CF798E Mike and code of a permutation
    CF1149E Election Promises
    [BZOJ 4311] 向量
    CF1268D Invertation in Tournament
    [做题笔记] 浅谈势能线段树在特殊区间问题上的应用
  • 原文地址:https://www.cnblogs.com/mm962464/p/13361476.html
Copyright © 2020-2023  润新知