详细介绍及传参的方式:
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HTTP和浏览器有点像,但却不是浏览器。很多人觉得既然HttpClient是一个HTTP客户端编程工具,很多人把他当做浏览器来理解,但是其实HttpClient不是浏览器,它是一个HTTP通信库,因此它只提供一个通用浏览器应用程序所期望的功能子集,最根本的区别是HttpClient中没有用户界面,浏览器需要一个渲染引擎来显示页面,并解释用户输入,例如鼠标点击显示页面上的某处,有一个布局引擎,计算如何显示HTML页面,包括级联样式表和图像。javascript解释器运行嵌入HTML页面或从HTML页面引用的javascript代码。来自用户界面的事件被传递到javascript解释器进行处理。除此之外,还有用于插件的接口,可以处理Applet,嵌入式媒体对象(如pdf文件,Quicktime电影和Flash动画)或ActiveX控件(可以执行任何操作)。HttpClient只能以编程的方式通过其API用于传输和接受HTTP消息。
HttpClient的主要功能:
实现了所有 HTTP 的方法(GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等)
支持 HTTPS 协议
支持代理服务器(Nginx等)等
支持自动(跳转)转向
……
HttpClientUtil工具的使用:
1:导入jar包:
1-1:httpClient包:
1-2:json-包:
2:自己简单封装好的HttpClientUtil:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.floor.shop.util; 2 3 import com.floor.shop.model.Product; 4 import net.sf.json.JSONArray; 5 import net.sf.json.JSONObject; 6 import org.apache.http.client.methods.CloseableHttpResponse; 7 import org.apache.http.client.methods.HttpPost; 8 import org.apache.http.impl.client.DefaultHttpClient; 9 import org.apache.http.util.EntityUtils; 10 11 import java.io.IOException; 12 13 14 /** 15 * Created by Administrator on 1/5. 16 */ 17 public class HttpClientUtil{ 18 //发送请求 19 public static String post(String url) throws IOException { 20 //1.创建发送对象 21 HttpPost httpPost = new HttpPost(url); 22 //2.创建客户端 23 DefaultHttpClient defaultHttpClient = new DefaultHttpClient(); 24 //3.使用客户端发送请求 25 CloseableHttpResponse execute = defaultHttpClient.execute(httpPost); 26 //4.解析成json结果 27 org.apache.http.HttpEntity entity = execute.getEntity(); 28 String s = EntityUtils.toString(entity); 29 //结果可以用json格式化工具显示出来,方便解析出来 30 System.out.println("s="+s); 31 return s; 32 } 33 34 //将json格式的结果解析出来 35 public static void json( String s){ 36 //1:将json格式的字符串转换为json格式的对象 37 JSONObject jsonObject = JSONObject.fromObject(s); 38 //2:通过json对象取出对应的值:(按照自己的结果解析,下面只是我的例子) 39 String code = jsonObject.getString("code"); 40 int currentPage = jsonObject.getInt("currentPage"); 41 boolean success = jsonObject.getBoolean("success"); 42 if(success==true){ 43 //将json(key,value)格式的value,转换为数组 44 JSONArray list = jsonObject.getJSONArray("key"); 45 //遍历数组: 46 for (int i=0;i<list.size();i++){ 47 //取出数组里面的单个对象: 48 JSONObject jsonObject1 = list.getJSONObject(i); 49 //把json对象转换为java对象(product) 50 Product o = (Product)JSONObject.toBean(jsonObject1, Product.class); 51 System.out.println("o ="+o); 52 } 53 } 54 } 55 56 public static void main(String[] args) throws IOException { 57 // String url="http://10.3.2.25:8081/ticket2/data3?token=xnmcz"; 58 String url="http://192.168.43.127:8081/product/chooseQuery?token=xnmcz"; 59 String str = post(url); 60 json(str); 61 } 62 }
3:实例:
1:工具类的核心代码:
2:json的解析:
二、maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.43</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
HttpClientUtil:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.zhl.framework.orm.mybatis.util; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; 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.ContentType; 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.util.EntityUtils; public class HttpClientUtil { public HttpClientUtil() { } public static String doGet(String url, Map<String, String> param) { CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { URIBuilder builder = new URIBuilder(url); if (param != null) { Iterator var6 = param.keySet().iterator(); while(var6.hasNext()) { String key = (String)var6.next(); builder.addParameter(key, (String)param.get(key)); } } URI uri = builder.build(); HttpGet httpGet = new HttpGet(uri); response = httpclient.execute(httpGet); if (response.getStatusLine().getStatusCode() == 200) { resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception var16) { var16.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException var15) { var15.printStackTrace(); } } return resultString; } public static String doGet(String url) { return doGet(url, (Map)null); } public static String doPost(String url, Map<String, String> param) { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { HttpPost httpPost = new HttpPost(url); if (param != null) { List<NameValuePair> paramList = new ArrayList(); Iterator var7 = param.keySet().iterator(); while(var7.hasNext()) { String key = (String)var7.next(); paramList.add(new BasicNameValuePair(key, (String)param.get(key))); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, "utf-8"); httpPost.setEntity(entity); } response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception var17) { var17.printStackTrace(); } finally { try { response.close(); } catch (IOException var16) { var16.printStackTrace(); } } return resultString; } public static String doPost(String url) { return doPost(url, (Map)null); } public static String doPostJson(String url, String json) { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { HttpPost httpPost = new HttpPost(url); StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception var15) { var15.printStackTrace(); } finally { try { response.close(); } catch (IOException var14) { var14.printStackTrace(); } } return resultString; } }
详细参考:
https://blog.csdn.net/justry_deng/article/details/81042379