美文网首页
请求相关

请求相关

作者: 自由主义者 | 来源:发表于2020-03-03 17:27 被阅读0次
    import org.apache.http.NameValuePair;
    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.impl.client.CloseableHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.springframework.stereotype.Component;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    @Component
    public class HttpClientHelper {
    
       // @Autowired
        private CloseableHttpClient httpClient;
    
       // @Autowired
        private RequestConfig config;
    
    
        /**
         * 不带参数的get请求,如果状态码为200,则返回body,如果不为200,则返回null
         *
         * @param url
         * @return
         * @throws Exception
         */
        public String doGet(String url) throws Exception {
            // 声明 http get 请求
            HttpGet httpGet = new HttpGet(url);
    
            // 装载配置信息
            httpGet.setConfig(config);
    
            // 发起请求
            CloseableHttpResponse response = this.httpClient.execute(httpGet);
    
            // 判断状态码是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                // 返回响应体的内容
                return EntityUtils.toString(response.getEntity(), "UTF-8");
            }
            return null;
        }
    
        /**
         * 带参数的get请求,如果状态码为200,则返回body,如果不为200,则返回null
         *
         * @param url
         * @return
         * @throws Exception
         */
        public String doGet(String url, Map<String, Object> map) throws Exception {
            URIBuilder uriBuilder = new URIBuilder(url);
    
            if (map != null) {
                // 遍历map,拼接请求参数
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    uriBuilder.setParameter(entry.getKey(), entry.getValue().toString());
                }
            }
    
            // 调用不带参数的get请求
            return this.doGet(uriBuilder.build().toString());
    
        }
    
        /**
         * 带参数的post请求
         *
         * @param url
         * @param map
         * @return
         * @throws Exception
         */
        public HttpResult doPost(String url, Map<String, Object> map) throws Exception {
            // 声明httpPost请求
            HttpPost httpPost = new HttpPost(url);
            // 加入配置信息
            httpPost.setConfig(config);
    
            // 判断map是否为空,不为空则进行遍历,封装from表单对象
            if (map != null) {
                List<NameValuePair> list = new ArrayList<NameValuePair>();
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    list.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
                }
                // 构造from表单对象
                UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list, "UTF-8");
    
                // 把表单放到post里
                httpPost.setEntity(urlEncodedFormEntity);
            }
    
            // 发起请求
            CloseableHttpResponse response = this.httpClient.execute(httpPost);
            HttpResult httpResult =new HttpResult();
            httpResult.setCode(response.getStatusLine().getStatusCode());
            httpResult.setBody(EntityUtils.toString(
                    response.getEntity(), "UTF-8"));
            return httpResult;
                    
        }
    
        /**
         * 不带参数post请求
         *
         * @param url
         * @return
         * @throws Exception
         */
        public HttpResult doPost(String url) throws Exception {
            return this.doPost(url, null);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:请求相关

          本文链接:https://www.haomeiwen.com/subject/ljahlhtx.html