httpclient的扩展

httpclient的扩展

前言

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

使用场景

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

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

使用示例

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

1
2
3
4
5
<dependency>
<groupId>net.wicp.tams</groupId>
<artifactId>common-http</artifactId>
<version>最后版本</version>
</dependency>

调用测试方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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);
}
}

坚持原创技术分享,您的支持是我前进的动力!