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 { @Test public void tetHttpGet() { HttpResult doGet = HttpClient.doGet("http://www.baidu.com"); System.out.println(doGet.getBodyStr()); }
@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()); }
@Test public void testHttpPostRela() throws ProjectException { JSONObject json = new JSONObject(); json.put("abc", "abc"); JSONObject doPostRela = HttpClient.doPostRela("/abc", json); System.out.println(doPostRela); } @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); } @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); } }
|