httpclient之入门使用
Posted 纳木错星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httpclient之入门使用相关的知识,希望对你有一定的参考价值。
1.简介
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
2.使用场景
HttpClient可以灵活地访问网络资源,他不仅可以灵活地在客户端访问服务端的网络资源。在服务端,也可以通过HttpClient完成跨层次访问。
3.使用
下面可以通过HttpClientUtil清晰的掌握HttpClient的基本使用方法:(GET,POST和JSON的提交)
1 public class HttpClientUtil { 2 3 public static String doGet(String url, Map<String, String> param) { 4 5 // 创建Httpclient对象 6 CloseableHttpClient httpclient = HttpClients.createDefault(); 7 8 String resultString = ""; 9 CloseableHttpResponse response = null; 10 try { 11 // 创建uri 12 URIBuilder builder = new URIBuilder(url); 13 if (param != null) { 14 //拼接请求参数 15 for (String key : param.keySet()) { 16 builder.addParameter(key, param.get(key)); 17 } 18 } 19 URI uri = builder.build(); 20 21 // 创建http GET请求 22 HttpGet httpGet = new HttpGet(uri); 23 24 // 执行请求 25 response = httpclient.execute(httpGet); 26 // 判断返回状态是否为200 27 if (response.getStatusLine().getStatusCode() == 200) { 28 resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); 29 } 30 } catch (Exception e) { 31 e.printStackTrace(); 32 } finally { 33 try { 34 if (response != null) { 35 response.close(); 36 } 37 httpclient.close(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } 41 } 42 return resultString; 43 } 44 45 public static String doGet(String url) { 46 return doGet(url, null); 47 } 48 49 public static String doPost(String url, Map<String, String> param) { 50 // 创建Httpclient对象 51 CloseableHttpClient httpClient = HttpClients.createDefault(); 52 //创建HttpResponse响应 53 CloseableHttpResponse response = null; 54 String resultString = ""; 55 try { 56 // 创建Http Post请求 57 HttpPost httpPost = new HttpPost(url); 58 // 创建参数列表 59 if (param != null) { 60 //拼接表单参数 61 List<NameValuePair> paramList = new ArrayList<>(); 62 for (String key : param.keySet()) { 63 paramList.add(new BasicNameValuePair(key, param.get(key))); 64 } 65 // 模拟表单 66 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList); 67 httpPost.setEntity(entity); 68 } 69 // 执行http请求 70 response = httpClient.execute(httpPost); 71 resultString = EntityUtils.toString(response.getEntity(), "utf-8"); 72 } catch (Exception e) { 73 e.printStackTrace(); 74 } finally { 75 try { 76 response.close(); 77 } catch (IOException e) { 78 // TODO Auto-generated catch block 79 e.printStackTrace(); 80 } 81 } 82 83 return resultString; 84 } 85 86 public static String doPost(String url) { 87 return doPost(url, null); 88 } 89 90 public static String doPostJson(String url, String json) { 91 // 创建Httpclient对象 92 CloseableHttpClient httpClient = HttpClients.createDefault(); 93 CloseableHttpResponse response = null; 94 String resultString = ""; 95 try { 96 // 创建Http Post请求 97 HttpPost httpPost = new HttpPost(url); 98 // 创建请求内容 99 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); 100 //设置Post请求 101 httpPost.setEntity(entity); 102 // 执行http请求 103 response = httpClient.execute(httpPost); 104 resultString = EntityUtils.toString(response.getEntity(), "utf-8"); 105 } catch (Exception e) { 106 e.printStackTrace(); 107 } finally { 108 try { 109 response.close(); 110 } catch (IOException e) { 111 // TODO Auto-generated catch block 112 e.printStackTrace(); 113 } 114 } 115 116 return resultString; 117 } 118 }
以上是关于httpclient之入门使用的主要内容,如果未能解决你的问题,请参考以下文章
.net core HttpClient 使用之消息管道解析