国内免费产品发布网站,四川住房和城乡建设厅网站官网,典型的网站开发人员,网站建设兰州1. 什么是httpclient HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了#xff0c;越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能#xff0c;但是对于大部分应用程序来说#x…1. 什么是httpclient HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能但是对于大部分应用程序来说JDK库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包并且它支持 HTTP 协议最新的版本和建议。 下载地址http://hc.apache.org/ 2. 功能介绍 以下列出的是 HttpClient 提供的主要的功能要知道更多详细的功能可以参见 HttpClient 的主页。 1实现了所有 HTTP 的方法GET,POST,PUT,HEAD 等 2支持自动转向 3支持 HTTPS 协议 4支持代理服务器等 3. 导入依赖 4.1. 执行GET请求
public class DoGET {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 创建http GET请求HttpGet httpGet new HttpGet(http://www.baidu.com/);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);System.out.println(内容长度 content.length());
// FileUtils.writeStringToFile(new File(C:\\baidu.html), content);}} finally {if (response ! null) {response.close();}httpclient.close();}}
}4.2. 执行带参数GET请求 public class DoGETParam {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 定义请求的参数URI uri new URIBuilder(http://www.baidu.com/s).setParameter(wd, java).build();System.out.println(uri);// 创建http GET请求HttpGet httpGet new HttpGet(uri);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);System.out.println(content);}} finally {if (response ! null) {response.close();}httpclient.close();}}
}5.1. 执行post请求 public class DoPOST {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 创建http POST请求HttpPost httpPost new HttpPost(http://www.oschina.net/);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);System.out.println(content);}} finally {if (response ! null) {response.close();}httpclient.close();}}
}5.2. 执行带参数post请求 public class DoPOSTParam {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 创建http POST请求HttpPost httpPost new HttpPost(http://www.oschina.net/search);// 设置2个post参数一个是scope、一个是qListNameValuePair parameters new ArrayListNameValuePair(0);parameters.add(new BasicNameValuePair(scope, project));parameters.add(new BasicNameValuePair(q, java));// 构造一个form表单式的实体UrlEncodedFormEntity formEntity new UrlEncodedFormEntity(parameters);// 将请求实体设置到httpPost对象中httpPost.setEntity(formEntity);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);System.out.println(content);}} finally {if (response ! null) {response.close();}httpclient.close();}}
} 6. 一个封装HttpClient通用工具类 public class HttpClientUtil {public static String doGet(String url, MapString, String param) {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();String resultString ;CloseableHttpResponse response null;try {// 创建uriURIBuilder builder new URIBuilder(url);if (param ! null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri builder.build();// 创建http GET请求HttpGet httpGet new HttpGet(uri);// 执行请求response httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {resultString EntityUtils.toString(response.getEntity(), UTF-8);}} catch (Exception e) {e.printStackTrace();} finally {try {if (response ! null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}public static String doPost(String url, MapString, String param) {// 创建Httpclient对象CloseableHttpClient httpClient HttpClients.createDefault();CloseableHttpResponse response null;String resultString ;try {// 创建Http Post请求HttpPost httpPost new HttpPost(url);// 创建参数列表if (param ! null) {ListNameValuePair paramList new ArrayList();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response httpClient.execute(httpPost);resultString EntityUtils.toString(response.getEntity(), utf-8);} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}
}