HttpClient实现远程调用

        在项目中,我们常常遇到远程调用的问题,一个模块总是无法单独存在,总需要调用第三方或者其他模块的接口。这里我们就涉及到了远程调用。 原来在 ITOO中,我们是通过使用EJB来实现远程调用的,改版之后,我们用Dubbo+zk来实现。下面介绍一下HttpClient的实现方法。

(一)简介

HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。可以说是现在Internet上面最重要,使用最多的协议之一了,越来越多的java应用需要使用http协议来访问网络资源,特别是现在rest api的流行。

(二)使用

<dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient-cache</artifactId>
      <version>4.5</version>
    </dependency>
    <dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpmime</artifactId>
     <version>4.3.2</version>
    </dependency>

(三)POST请求

实现步骤:
第一步:创建一个httpClient对象
第二步:创建一个HttpPost对象。需要指定一个url
第三步:创建一个list模拟表单,list中每个元素是一个NameValuePair对象
第四步:需要把表单包装到Entity对象中。StringEntity
第五步:执行请求。
第六步:接收返回结果
第七步:关闭流

@Test
	public void testHttpPost() throws Exception {
		
		// 第一步:创建一个httpClient对象
		CloseableHttpClient httpClient = HttpClients.createDefault();
		// 第二步:创建一个HttpPost对象。需要指定一个url
		HttpPost post = new HttpPost("http://localhost:8082/posttest.html");
		// 第三步:创建一个list模拟表单,list中每个元素是一个NameValuePair对象
		List<NameValuePair> formList = new ArrayList<>();
		formList.add(new BasicNameValuePair("name", "张三"));
		formList.add(new BasicNameValuePair("pass", "1243"));
		// 第四步:需要把表单包装到Entity对象中。StringEntity
		StringEntity entity = new UrlEncodedFormEntity(formList, "utf-8");
		post.setEntity(entity);
		// 第五步:执行请求。
		CloseableHttpResponse response = httpClient.execute(post);
		// 第六步:接收返回结果
		HttpEntity httpEntity = response.getEntity();
		String result = EntityUtils.toString(httpEntity);
		System.out.println(result);
		// 第七步:关闭流。
		response.close();
		httpClient.close();
	}


(四)Get请求

实现步骤:
第一步:创建一个httpClient对象
第二步:创建一个HttpPost对象。需要指定一个url
第三步:创建一个list模拟表单,list中每个元素是一个NameValuePair对象
第四步:需要把表单包装到Entity对象中。StringEntity
第五步:执行请求。
第六步:接收返回结果
第七步:关闭流。

@Test
	public void testHttpGet() throws Exception {
		// 第一步:把HttpClient使用的jar包添加到工程中。
		// 第二步:创建一个HttpClient的测试类
		// 第三步:创建测试方法。
		// 第四步:创建一个HttpClient对象
		CloseableHttpClient httpClient = HttpClients.createDefault();
		// 第五步:创建一个HttpGet对象,需要制定一个请求的url
		HttpGet get = new HttpGet("http://www.itheima.com");
		// 第六步:执行请求。
		CloseableHttpResponse response = httpClient.execute(get);
		// 第七步:接收返回结果。HttpEntity对象。
		HttpEntity entity = response.getEntity();
		// 第八步:取响应的内容。
		String html = EntityUtils.toString(entity);
		System.out.println(html);
		// 第九步:关闭response、HttpClient。
		response.close();
		httpClient.close();
	}


评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值