httpclient的扩展

前言

会有一系列的文章介绍common-*.jar的各种用法,这些工具类jar包都已上传在maven中央库。可以直接通过maven坐标引入使用。源码可以参见:https://gitee.com/rjzjh/common

使用场景

在java世界里,后端通过http协议来调用服务是非常常见的情形,犹其是现在微服务盛行,java一般是通过httpclient工具来做http调用的,但由于其功能较为强大,使用上倍感复杂,今天写的代码,过几天都快看不懂的事经常发生,common-http模块就是试图降低httpclient的复杂性,希望通过简单的的api,传几个我们一看就明白的参数来解决我们的问题。

common-http模块也对httpclient做了一些扩展,如大文件的多线程下载、异步调用等。这些个场景都是在开发中经常碰到的。

使用示例

使用前需要引用依赖包,maven坐标为:

<dependency>
    <groupId>net.wicp.tams</groupId>
    <artifactId>common-http</artifactId>
    <version>最后版本</version>
</dependency>

调用测试方式:

package net.wicp.tams.common.http.test;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

import org.junit.Test;

import com.alibaba.fastjson.JSONObject;

import net.wicp.tams.common.exception.ProjectException;
import net.wicp.tams.common.http.HttpClient;
import net.wicp.tams.common.http.HttpResult;
import net.wicp.tams.common.http.HttpThread;
import net.wicp.tams.common.http.download.Download;

public class TestHttps {
	// get调用
	@Test
	public void tetHttpGet() {
		HttpResult doGet = HttpClient.doGet("http://www.baidu.com");
		System.out.println(doGet.getBodyStr());
	}

	// post调用
	@Test
	public void testHttpPost() {
		JSONObject json = new JSONObject();
		json.put("abc", "abc");
		HttpResult doPost = HttpClient.doPost("http://localhost:8080/abcd", json);
		System.out.println(doPost.getBodyStr());
	}

	// 异步调用
	@Test
	public void testHttpPostAsyn() throws InterruptedException, ExecutionException {
		JSONObject json = new JSONObject();
		json.put("abc", "abc");
		FutureTask<HttpResult> doPostAsyn = HttpClient.doPostAsyn("http://localhost:8080/abcd", json);
		System.out.println(doPostAsyn.get().getBodyStr());
	}

	// 相对地址调用,你需要配置好配置项:common.http.url.pre=http://localhost:8080/
	@Test
	public void testHttpPostRela() throws ProjectException {
		JSONObject json = new JSONObject();
		json.put("abc", "abc");
		JSONObject doPostRela = HttpClient.doPostRela("/abc", json);
		System.out.println(doPostRela);
	}
	//大文件的多线程调用,每个线程下载大小2M
	@Test
	public void testHttpBigFile() throws Exception {
		Download download=new Download("http://localhost:8080/abcd.txt", "/data/abcd.txt");
		String download2 = download.download();
		System.out.println(download2);
	}
	//请求xml参数
	@Test
	public void testHttpXml() throws Exception {
		String xmlstr="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + 
				"<InterFaceMapping>\r\n" + 
				"	<PropertyIn>\r\n" + 
				"		<COL name=\"msgId\" type=\"string\">消息唯一标识符,缺省会使用时间戳</COL>\r\n" + 
				"	</PropertyIn>\r\n" + 
				"</InterFaceMapping>";
		HttpThread doPostXml = HttpClient.doPostXml("http://localhost:8080/abcd", xmlstr);
		HttpResult callBlock = doPostXml.callBlock();
		System.out.println(callBlock);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偏锋书生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值