`

httpClient jar包封装和使用

阅读更多

         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包下载

    本文将深入探讨httpclient.jar包,以及它与code.jar包的关系,帮助开发者更好地理解和使用这两个组件。 httpclient.jar是Apache HttpClient库的核心组件,它提供了全面的HTTP协议支持,包括HTTP/1.1和部分HTTP/2。...

    JAVA httpclient jar下载

    httpclient常用封装工具 doGet(String url, Map, String&gt; param) doPost(String url, Map, String&gt; param) doPostJson(String url, String json)

    接口测试 - 基于HttpClient jar包的封装类

    附件是一个Java类,基于Java的第三方Jar包封装好的,可以直接使用,进行接口测试

    httpclient jar包

    Apache HttpClient库,尤其是`commons-httpclient-3.1.jar`版本,提供了强大的功能,使得开发者能够高效、灵活地处理HTTP请求和响应。本文将深入探讨这个库的核心概念、主要功能以及使用方法。 一、HttpClient概述 ...

    HttpClient4.5 Jar包

    在使用HttpClient 4.5时,可以通过"使用说明.txt"文件获取详细的配置和使用指南,了解如何导入httpclient-4.5所需jar包,以及如何创建和配置HttpClient实例,进行GET、POST等请求,处理响应,管理连接和会话,以及...

    Httpclient使用jar包三合一,基本使用方法

    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.3.zip jar 包

    包封装。能够让JAR包里面的文件依赖于统一版本的类文件。 可移植性,能够在各种平台上直接使用。 把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令...

    httpclient.jar包和帮助文档及其与之搭配使用的jar包

    `httpclient.jar`通常需要与其他依赖的jar包一起使用,以实现更完整的功能,如: 1. **commons-codec.jar**:包含编码和解码的工具,如Base64编码,这对于HTTP身份验证和加密通信非常关键。 - **Base64**:进行Base...

    httpclient和httpmime的jar包

    标题中的“httpclient和httpmime的jar包”指的是Apache HttpClient库和HttpMime模块的Java实现,这两个组件在Java开发中常用于处理HTTP通信。Apache HttpClient是一个强大的HTTP客户端API,而HttpMime则提供了处理...

    httpclient所需jar包

    在"描述"中提到的`httpclientutil工具类`,通常是指开发者为了简化HttpClient的使用而封装的一套实用工具类。这些工具类可能包含了一些常用的HTTP操作方法,如发送GET请求获取数据、发送POST请求提交数据等,使得...

    httpclient所有jar包以及实现类

    本资源包含了一个名为"HTTPclient.jar"的文件,这正是Apache HttpClient库的jar包,它在后台编程中用于与HTTP服务器交互,特别是当需要从服务器获取或提交JSON数据时。 首先,让我们详细了解一下Apache HttpClient...

    httpclient、Request请求JAR包

    Request是对httpclient的封装,类似于python的request库,用法Request.Get(pictureUrl).execute().returnContent().toString();需要以来httpclient和httpcore包。2020年1月更新。

    commons-httpclient.jar 包的API

    `commons-httpclient....虽然该库已经被`httpclient`模块的后续版本(如`httpclient-4.x`和`httpclient-5.x`)所取代,但`commons-httpclient.jar`在许多遗留系统中仍然广泛使用。理解其API对于维护这些系统至关重要。

    HttpClient官方jar包文档

    9. **SSL/TLS支持**:HttpClient可以配置为使用HTTPS,通过SSLContext和KeyManagerFactory来管理证书和密钥。 10. **HttpParams**:这是一个参数容器,用于设置HttpClient的行为,如连接超时、重试次数、默认编码等...

    commons-httpclient-3.1.zip jar包

    包封装。能够让JAR包里面的文件依赖于统一版本的类文件。 可移植性,能够在各种平台上直接使用。 把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令...

Global site tag (gtag.js) - Google Analytics