Java 如何发送http get post请求5分钟解决

Java 如何发送http get post请求5分钟解决

今天加班写的博客啊 看完记得点赞 哈哈
首先导入发送http请求依赖

<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>

接着导入 阿里巴巴的获取json依赖

<!--         阿里巴巴获取json其中一段数据  发送http请求导入依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.9</version>
        </dependency>

导入完成依赖后 导入HttpClient类 建议你们就叫这个名 省的其他类里面名都要跟着换

package com.example.demo.test;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.test.SSLClient;
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.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.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;


/**
 * HttpClient发送GET、POST请求
 * @Author libin
 * @CreateDate 2018.5.28 16:56
 */
public class HttpClient {
    
    

    private static final Logger LOGGER = LoggerFactory.getLogger(HttpClient.class);
    /**
     * 返回成功状态码
     */
    private static final int SUCCESS_CODE = 200;

    /**
     * 发送GET请求
     * @param url   请求url
     * @param nameValuePairList    请求参数
     * @return JSON或者字符串
     * @throws Exception
     */
    public static Object sendGet(String url, List<NameValuePair> nameValuePairList) throws Exception{
    
    
        JSONObject jsonObject = null;
        CloseableHttpClient client = null;
        CloseableHttpResponse response = null;
        try{
    
    
            /**
             * 创建HttpClient对象
             */
            client = HttpClients.createDefault();
            /**
             * 创建URIBuilder
             */
            URIBuilder uriBuilder = new URIBuilder(url);
            /**
             * 设置参数
             */
            uriBuilder.addParameters(nameValuePairList);
            /**
             * 创建HttpGet
             */
            HttpGet httpGet = new HttpGet(uriBuilder.build());
            /**
             * 设置请求头部编码
             */
            httpGet.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));
            /**
             * 设置返回编码
             */
            httpGet.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));
            /**
             * 请求服务
             */
            response = client.execute(httpGet);
            /**
             * 获取响应吗
             */
            int statusCode = response.getStatusLine().getStatusCode();

            if (SUCCESS_CODE == statusCode){
    
    
                /**
                 * 获取返回对象
                 */
                HttpEntity entity = response.getEntity();
                /**
                 * 通过EntityUitls获取返回内容
                 */
                String result = EntityUtils.toString(entity,"UTF-8");
                /**
                 * 转换成json,根据合法性返回json或者字符串
                 */
                try{
    
    
                    jsonObject = JSONObject.parseObject(result);
                    return jsonObject;
                }catch (Exception e){
    
    
                    return result;
                }
            }else{
    
    
                LOGGER.error("HttpClientService-line: {}, errorMsg{}", 97, "GET请求失败!");
            }
        }catch (Exception e){
    
    
            LOGGER.error("HttpClientService-line: {}, Exception: {}", 100, e);
        } finally {
    
    
            response.close();
            client.close();
        }
        return null;
    }

    /**
     * 发送POST请求
     * @param url
     * @param nameValuePairList
     * @return JSON或者字符串
     * @throws Exception
     */
    public static <JSONObject> Object sendPost(String url, List<NameValuePair> nameValuePairList) throws Exception{
    
    
        JSONObject jsonObject = null;
        CloseableHttpClient client = null;
        CloseableHttpResponse response = null;
        try{
    
    
            /**
             *  创建一个httpclient对象
             */
            client = HttpClients.createDefault();
            /**
             * 创建一个post对象
             */
            HttpPost post = new HttpPost(url);
            /**
             * 包装成一个Entity对象
             */
            StringEntity entity = new UrlEncodedFormEntity(nameValuePairList, "UTF-8");
            /**
             * 设置请求的内容
             */
            post.setEntity(entity);
            /**
             * 设置请求的报文头部的编码
             */
            post.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));
            /**
             * 设置请求的报文头部的编码
             */
            post.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));
            /**
             * 执行post请求
             */
            response = client.execute(post);
            /**
             * 获取响应码
             */
            int statusCode = response.getStatusLine().getStatusCode();
            if (SUCCESS_CODE == statusCode){
    
    
                /**
                 * 通过EntityUitls获取返回内容
                 */
                String result = EntityUtils.toString(response.getEntity(),"UTF-8");
                /**
                 * 转换成json,根据合法性返回json或者字符串
                 */
                try{
    
    
                    jsonObject = (JSONObject) com.alibaba.fastjson.JSONObject.parseObject(result);
                    return jsonObject;
                }catch (Exception e){
    
    
                    return result;
                }
            }else{
    
    
                LOGGER.error("HttpClientService-line: {}, errorMsg:{}", 146, "POST请求失败!");
            }
        }catch (Exception e){
    
    
            LOGGER.error("HttpClientService-line: {}, Exception:{}", 149, e);
        }finally {
    
    
            response.close();
            client.close();
        }
        return null;
    }



    /**
     * 组织请求参数{参数名和参数值下标保持一致}
     * @param params    参数名数组
     * @param values    参数值数组
     * @return 参数对象
     */
    public static List<NameValuePair> getParams(Object[] params, Object[] values){
    
    
        /**
         * 校验参数合法性
         */
        boolean flag = params.length>0 && values.length>0 &&  params.length == values.length;
        if (flag){
    
    
            List<NameValuePair> nameValuePairList = new ArrayList<>();
            for(int i =0; i<params.length; i++){
    
    
                nameValuePairList.add(new BasicNameValuePair(params[i].toString(),values[i].toString()));
            }
            return nameValuePairList;
        }else{
    
    
            LOGGER.error("HttpClientService-line: {}, errorMsg:{}", 197, "请求参数为空且参数长度不一致");
        }
        return null;
    }


    public static Object doPostData(String url, String json) throws Exception {
    
    
        JSONObject jsonObject = null;
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
        String result = "";
        HttpResponse res = null;
        try {
    
    
            StringEntity s = new StringEntity(json.toString(), "UTF-8");
            s.setContentType("application/json");
            post.setHeader("Accept", "application/json");
            post.setHeader("Content-type", "application/json; charset=utf-8");
            post.setEntity(s);
            res = client.execute(post);
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    
    
                result = EntityUtils.toString(res.getEntity());
                jsonObject = JSONObject.parseObject(result);
                return jsonObject;
//                return HttpStatus.SC_OK + "";
            }
        } catch (Exception e) {
    
    
            if(res == null) {
    
    
                return "HttpResponse 为 null!";
            }
            throw new RuntimeException(e);
        }
        if(res == null || res.getStatusLine() == null) {
    
    
            return "无响应";
        }
        return res.getStatusLine().getStatusCode() + "";
    }

    public static String doPost(String url, String map, String charset) {
    
    
        org.apache.http.client.HttpClient httpClient = null;
        HttpPost httpPost = null;
        String result = null;
        try {
    
    
            httpClient = new SSLClient();

            httpPost = new HttpPost(url);
            //设置参数
            httpPost.addHeader("Accept", "application/json");
            httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
            StringEntity stringEntity = new StringEntity(map);
            stringEntity.setContentEncoding("UTF-8");
            stringEntity.setContentType("application/json");
            httpPost.setEntity(stringEntity);
            HttpResponse response = httpClient.execute(httpPost);
            if (response != null) {
    
    
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
    
    
                    result = EntityUtils.toString(resEntity, charset);
                }
            }
        } catch (Exception ex) {
    
    
            ex.printStackTrace();
        }
        return result;
    }


}

接着咱们创建SSLClient类 建议都按我这个名字来

package com.example.demo.test;

import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class SSLClient extends DefaultHttpClient {
    
    
    public SSLClient() throws Exception {
    
    
        super();
        //传输协议需要根据自己的判断
        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {
    
    
            @Override
            public void checkClientTrusted(X509Certificate[] chain,
                                           String authType) throws CertificateException {
    
    
            }
            @Override
            public void checkServerTrusted(X509Certificate[] chain,
                                           String authType) throws CertificateException {
    
    
            }
            @Override
            public X509Certificate[] getAcceptedIssuers() {
    
    
                return null;
            }
        };
        ctx.init(null, new TrustManager[]{
    
    tm}, null);
        SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        ClientConnectionManager ccm = this.getConnectionManager();
        SchemeRegistry sr = ccm.getSchemeRegistry();
        sr.register(new Scheme("https", 443, ssf));
    }
}

好的 最后导入一个类 Test 测试类 测试发送请求

package com.example.demo.test;
import org.apache.http.NameValuePair;
import java.util.List;


/**
 * 发送post/get 测试类
 */
public class Test {
    
    

    public static void main(String[] args) throws Exception{
    
    

        /**
         * 参数值
         */
        Object [] params = new Object[]{
    
    "param1","param2"};
        /**
         * 参数名
         */
        Object [] values = new Object[]{
    
    "value1","value2"};

        /**
         * 获取参数对象
         */
        List<NameValuePair> paramsList = HttpClient.getParams(params, values);
        /**
         * 发送get
         */
        Object result = HttpClient.sendGet(WXconstant.WXACCESSTOKEN, paramsList);
        /**
         * 发送post
         */
        Object result2 = HttpClient.sendPost(WXconstant.WXACCESSTOKEN, paramsList);
        System.out.println("GET返回信息:" + result);
        System.out.println("POST返回信息:" + result2);
    }
}

参数值不用动 就写你要请求的url地址就可以
在这里插入图片描述
好了 这里就结束了 如果想问如何发送http请求带json参数过去 下一篇博客出 看完记得点赞+关注

猜你喜欢

转载自blog.csdn.net/qq_44664329/article/details/108982959