HttpClient:可以用来在代码中模拟发送http请求的客户端工具包。
发送http请求,接受http请求返回来的消息。
本文中给出的例子都是根据httpClient4.3.4.jar包编写的。
1.HttpGet
public String httpGet(String url){ String result=null; try { HttpGet httpGet = new HttpGet(url); CloseableHttpResponse response = this.httpClient.execute(httpGet); final int statusCode = response.getStatusLine().getStatusCode(); if(statusCode == org.apache.http.HttpStatus.SC_OK){ if (response.containsHeader("ERROR_SIGN") && "Y".equals(response .getHeaders("ERROR_SIGN")[0] .getValue())) { } else{ HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity);//获取字符串 if(entity != null){ final InputStream instream = entity.getContent();//访问url try{ instream.read(); }finally{ instream.close(); } } byte[] byteArray=EntityUtils.toByteArray(entity);//获取字节数字 } }else{ } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; }
2.HttpPost,HttpPut,HttpDelete这些方法使用和上面例子差不多,只要将相应HttpGet换成HttpPost,HttpPut和HttpDelete实例即可。
注意这些方法都要finally 释放连接
以上这些例子,只是简单的介绍,实际上httpClient并没有这么简单,还有许多其他的知识点需要了解,比如说Http请求自动获取cookie,请求响应多长时间算失效,连接间隔等等。
要想在已有工具基础上写出好的封装工具,需要会读文档,了解对象的基本含义和设置,拥有远见的思想。
3.虽然觉得HttpPost等方法调用相似,但还是决定给个例子,写些返回方法的不同值的进行处理,包括设置HttpHeader等。
HttpPost
protected void addMapToParamList(final List<NameValuePair> paramList,final Map<String,? extends Object> paramMap){ if (paramMap != null) { for (final String key : paramMap.keySet()) { final Object value = paramMap.get(key); if(value instanceof List<?>){ for(final String v : (List<String>)value){ paramList.add(new BasicNameValuePair(key, v)); } } else if(value.getClass().isArray()){ for(final String v : (String[])value){ paramList.add(new BasicNameValuePair(key, v)); } }else{ paramList.add(new BasicNameValuePair(key, (String)value)); } } } }
public String httpPost(String url, Map<String, Object> paramsMap) { String result = null; final List<NameValuePair> paramList = new ArrayList<NameValuePair>(); addMapToParamList(paramList, paramsMap); HttpEntity httpEntity; try { httpEntity = new UrlEncodedFormEntity(paramList,encode); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } final HttpPost httpPost = new HttpPost(url); httpPost.setEntity(httpEntity); try { CloseableHttpResponse response = this.httpClient.execute(httpPost); final int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == org.apache.http.HttpStatus.SC_OK) { if (response.containsHeader("ERROR_SIGN") && "Y".equals(response.getHeaders("ERROR_SIGN")[0] .getValue())) { } else { HttpEntity entity1 = response.getEntity(); result = EntityUtils.toString(entity1); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { httpPost.releaseConnection(); } return result; }
4.HttpGet,HttpDelete,HttpPut,HttpPost这些都是HttpRequest对象的实现类,所以可以给他们设置request的内容,Header对象等(Accept-Type,Media-Type,Accept-Language等待),如果想要将返回的对象返回为json,xml等则加入一些jar包对象和json或xml的相互转换
相关推荐
本文将深入探讨httpclient.jar包,以及它与code.jar包的关系,帮助开发者更好地理解和使用这两个组件。 httpclient.jar是Apache HttpClient库的核心组件,它提供了全面的HTTP协议支持,包括HTTP/1.1和部分HTTP/2。...
httpclient常用封装工具 doGet(String url, Map, String> param) doPost(String url, Map, String> param) doPostJson(String url, String json)
附件是一个Java类,基于Java的第三方Jar包封装好的,可以直接使用,进行接口测试
Apache HttpClient库,尤其是`commons-httpclient-3.1.jar`版本,提供了强大的功能,使得开发者能够高效、灵活地处理HTTP请求和响应。本文将深入探讨这个库的核心概念、主要功能以及使用方法。 一、HttpClient概述 ...
Http协议使用封装jar包(commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-logging-1.1.jar) 简单使用方法: public static void main(String[] args) { // String str1 = ...
在使用HttpClient 4.5时,可以通过"使用说明.txt"文件获取详细的配置和使用指南,了解如何导入httpclient-4.5所需jar包,以及如何创建和配置HttpClient实例,进行GET、POST等请求,处理响应,管理连接和会话,以及...
包封装。能够让JAR包里面的文件依赖于统一版本的类文件。 可移植性,能够在各种平台上直接使用。 把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令...
`httpclient.jar`通常需要与其他依赖的jar包一起使用,以实现更完整的功能,如: 1. **commons-codec.jar**:包含编码和解码的工具,如Base64编码,这对于HTTP身份验证和加密通信非常关键。 - **Base64**:进行Base...
标题中的“httpclient和httpmime的jar包”指的是Apache HttpClient库和HttpMime模块的Java实现,这两个组件在Java开发中常用于处理HTTP通信。Apache HttpClient是一个强大的HTTP客户端API,而HttpMime则提供了处理...
在"描述"中提到的`httpclientutil工具类`,通常是指开发者为了简化HttpClient的使用而封装的一套实用工具类。这些工具类可能包含了一些常用的HTTP操作方法,如发送GET请求获取数据、发送POST请求提交数据等,使得...
本资源包含了一个名为"HTTPclient.jar"的文件,这正是Apache HttpClient库的jar包,它在后台编程中用于与HTTP服务器交互,特别是当需要从服务器获取或提交JSON数据时。 首先,让我们详细了解一下Apache HttpClient...
Request是对httpclient的封装,类似于python的request库,用法Request.Get(pictureUrl).execute().returnContent().toString();需要以来httpclient和httpcore包。2020年1月更新。
`commons-httpclient....虽然该库已经被`httpclient`模块的后续版本(如`httpclient-4.x`和`httpclient-5.x`)所取代,但`commons-httpclient.jar`在许多遗留系统中仍然广泛使用。理解其API对于维护这些系统至关重要。
9. **SSL/TLS支持**:HttpClient可以配置为使用HTTPS,通过SSLContext和KeyManagerFactory来管理证书和密钥。 10. **HttpParams**:这是一个参数容器,用于设置HttpClient的行为,如连接超时、重试次数、默认编码等...
包封装。能够让JAR包里面的文件依赖于统一版本的类文件。 可移植性,能够在各种平台上直接使用。 把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令...