org.apache.commons.httpclient.HttpClient的使用

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.5 (GA) (2015-09-11)

需要使用的jar包


使用步骤,思路

 1, 创建Http客户端对象
 2, 设置请求的url,连接的地址
 3, 设置请求的方式(Get/Post),请求内容的类型,接收内容的类型,字符编码
 4, 设置请求参数(请求内容)
 5, 按请求的方式执行请求,返回Http状态码
 6, 获得响应内容
 7, 释放连接


package com.httpclient1;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

import com.google.gson.Gson;


/**
 * 用commons-httpclient-3.1 框架, 模拟客户端请求
 * @since 2016-4-11
 * @version 1.0
 */
public class Client {

	public static void main(String[] args) {		
		String serviceUrl = "http://localhost:8080/MbtForSpring/test/demo/serviceOne.do";
		
		Map<String, Object> parames = new HashMap<String, Object>();
		Gson gson = new Gson();
		String json = null;
		try {
			parames.put("AppKey", "132152");
			parames.put("Ticket", "57077c8537");

			json = gson.toJson(parames);

			System.out.println("json:" + json);
			
			String str = doPost(serviceUrl, json);
			System.out.println(str);
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	/**
	 * 
	 * @param strUrl
	 * @param postString
	 * @return
	 * String
	 */
	@SuppressWarnings("deprecation")
	public static String doPost(String strUrl, String postString) {
		String receive = null;
		
		// 请求发布在本地 Tomcat上服务
		PostMethod method = new PostMethod(strUrl);
//		PostMethod method = new PostMethod();
		try {
			HttpClient client = new HttpClient();
//			client.getHostConfiguration().setHost(new HttpHost());
			
			//请求 网络上的服务, 用这种方式请求本地,返回一个Html页面
//			client.getHostConfiguration().setHost(new URI(strUrl));
			
			method.setRequestHeader("Content-type", "application/json; charset=UTF-8");
			method.setRequestHeader("Accept", "application/json; charset=UTF-8");
			// 设置为默认的重试策略
			method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
			
			// 4, 设置请求参数(请求内容)
/*			NameValuePair pair1 = new NameValuePair("key", "value");
			NameValuePair pair2 = new NameValuePair("key", "value");
			method.setRequestBody(new NameValuePair[]{pair1, pair2} );*/

			method.setRequestBody(postString);
			int rspCode = client.executeMethod(method);
			//
			System.out.println("rspCode:" + rspCode);
			receive = method.getResponseBodyAsString();
			System.out.println("receive:" + receive);
			return receive;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			method.releaseConnection();
		}
		return receive;
	}
}



  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
程序包org.apache.commons.httpclient是一个常见的Java程序包,用于处理HTTP请求和响应。如果某个项目或软件需要使用这个程序包,但在系统中找不到它,可能是由于以下几种原因: 1. 未正确安装org.apache.commons.httpclient程序包:可能是由于程序包未正确安装或配置在系统中,导致无法找到它。 2. 项目缺少必要的依赖:在使用org.apache.commons.httpclient程序包的项目中,可能没有正确声明或引入这个程序包的依赖关系,导致在编译或运行时无法找到它。 3. 项目使用了已经废弃的程序包:由于org.apache.commons.httpclient已经被标记为过时并不再推荐使用,可能是项目中仍在使用这个已经废弃的程序包导致找不到它。 解决这个问题的方法可以包括: 1. 确保正确安装org.apache.commons.httpclient程序包:通过下载最新的程序包文件,或通过项目构建工具如Maven或Gradle来引入这个程序包。 2. 确保项目正确声明了org.apache.commons.httpclient的依赖关系:在项目的构建配置文件中,声明并引入org.apache.commons.httpclient的依赖关系,以确保项目能够正确使用这个程序包。 3. 考虑迁移至其他替代方案:考虑迁移至其他更现代化并且仍在维护的HTTP客户端程序包,如Apache HttpClient 5,来替代org.apache.commons.httpclient程序包。 总之,要解决程序包org.apache.commons.httpclient不存在的问题,需要仔细检查系统配置、项目依赖关系,并考虑将项目迁移至其他替代方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值