HttClient工具使用
1、导入依赖
<!--httpclient--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> </dependency> <!--gson工具,封装http用--> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>
2、封装get和post
get方法返回json格式字符串,使用Gson将json转化为map
package net.xdclass.xdvidio.utils; import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; 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.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import sun.net.www.http.HttpClient; import java.util.HashMap; import java.util.Map; /** * @Author Pandas * @Date 2020/4/9 22:41 * @Version 1.0 * @Description 封装HTTP get post */ public class HttpUtils { static Map<String,Object> map=new HashMap<>(); private static final Gson gson=new Gson(); /** * get * @param url * @return */ public static Map<String,Object> doGet(String url){ CloseableHttpClient httpClient=HttpClients.createDefault(); RequestConfig requestConfig=RequestConfig.custom().setConnectTimeout(5000)//连接超时 .setConnectionRequestTimeout(5000)//请求超时 .setSocketTimeout(5000) .setRedirectsEnabled(true)//允许自动重定向 .build(); HttpGet httpGet=new HttpGet(url); httpGet.setConfig(requestConfig); try{ HttpResponse httpResponse= httpClient.execute(httpGet); if(httpResponse.getStatusLine().getStatusCode()==200){ String jsonResult= EntityUtils.toString(httpResponse.getEntity()); map=gson.fromJson(jsonResult,map.getClass()); } }catch (Exception e){ e.printStackTrace(); }finally { try{ httpClient.close(); }catch (Exception e){e.printStackTrace();} } return map; } /** * 封装post * @return */ public static String doPost(String url,String data,Integer timeout){ CloseableHttpClient httpClient=HttpClients.createDefault(); HttpPost httpPost=new HttpPost(url); httpPost.addHeader("Content-Type","text/html;chartset=UTF-8"); //设置超时时间 RequestConfig requestConfig=RequestConfig.custom().setConnectTimeout(timeout)//连接超时 .setConnectionRequestTimeout(timeout)//请求超时 .setSocketTimeout(timeout) .setRedirectsEnabled(true)//允许自动重定向 .build(); httpPost.setConfig(requestConfig); if(data!=null&&data instanceof String){ //使用字符串传参 StringEntity stringEntry=new StringEntity(data,"UTF-8"); httpPost.setEntity(stringEntry); } try{ CloseableHttpResponse httpResponse=httpClient.execute(httpPost); HttpEntity httpEntity=httpResponse.getEntity(); if(httpResponse.getStatusLine().getStatusCode()==200){ String result=EntityUtils.toString(httpEntity); return result; } }catch (Exception e){e.printStackTrace();} finally { try{ httpClient.close(); }catch(Exception e){e.printStackTrace();} } return null; } }
3、总结套路
1、实例化httpClient
2、实例化http请求(httpGet/httpPost/eta)
3、给请求添加信息
post请求的请求头(addHeader),请求体(setEntity)
实例化请求配置requestConfig,并加载到请求中,eta
4、httpClient服务器执行http请求,并返回httpResponse
从httpResponse中获取所需信息
5、关闭httpClient。
相关推荐
SXIAOYI 2020-09-16
xiaonuoyal 2020-06-17
SXIAOYI 2020-06-11
yinbaoshiguang 2020-06-09
Chydar 2020-06-02
nalanrumeng 2020-06-01
xiaonuoyal 2020-06-01
nalanrumeng 2020-05-19
ITprivate 2020-04-15
xiaonuoyal 2020-04-14
ITprivate 2020-03-26
ITprivate 2020-02-12
nalanrumeng 2020-01-13
xiaonuoyal 2019-12-07
xiaonuoyal 2019-11-18
TOmyhonour 2019-11-16
csdnxpw 2019-11-12