nutz国产注释工具类。开发者应该也是中国人,有其社区,目前开发人员还在解答疑问。
上pom
代码语言:javascript复制<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
<version>1.r.68.v20190220</version>
</dependency>
其http请求的使用,十分之简洁
代码语言:javascript复制import org.junit.Test;
import org.nutz.http.Http;
import java.util.HashMap;
import java.util.Map;
public class NutzTest {
@Test
public void test() {
String url = "请求的url地址";
// 请求携带的参数
Map<String, Object> param = new HashMap<>();
param.put("param1", 123456);
int timeout = 3000; // 超时时间
// 发送请求你
String ressult = Http.post(url, param, timeout);
// 打印返回值
System.out.println("ressult = " ressult);
}
}
另源码中文的注释,阅读体验比较友好。截取post相关请求以供参考。
代码语言:javascript复制/**
* 访问一个URL,并设置超时及参数
*
* @param url
* 需要访问的URL
* @param params
* 参数
* @param timeout
* 超时设置,单位为毫秒
* @return http响应
*/
public static String post(String url, Map<String, Object> params, int timeout) {
return post(url, params, timeout, Sender.Default_Conn_Timeout);
}
public static String post(String url, Map<String, Object> params, int timeout, int connTimeout) {
return Sender.create(Request.create(url, METHOD.POST, params, null)).setTimeout(timeout).setConnTimeout(connTimeout).send().getContent();
}
/**
* 访问一个URL,并设置超时及参数
*
* @param url
* 需要访问的URL
* @param params
* 参数
* @param timeout
* 超时设置,单位为毫秒
* @return http响应
*/
public static Response post2(String url, Map<String, Object> params, int timeout) {
return post2(url, params, timeout, Sender.Default_Conn_Timeout);
}
public static Response post2(String url, Map<String, Object> params, int timeout, int connTimeout) {
return Sender.create(Request.create(url, METHOD.POST, params, null))
.setTimeout(timeout).setConnTimeout(connTimeout)
.send();
}
public static Response post3(String url, Object body, Header header, int timeout) {
return post3(url, body, header, timeout, Sender.Default_Conn_Timeout);
}
public static Response post3(String url, Object body, Header header, int timeout, int connTimeout) {
Request req = Request.create(url, METHOD.POST).setHeader(header);
if (body != null) {
if (body instanceof InputStream) {
req.setInputStream((InputStream) body);
} else if (body instanceof byte[]) {
req.setData((byte[]) body);
} else {
req.setData(String.valueOf(body));
}
}
return Sender.create(req).setTimeout(timeout).setConnTimeout(connTimeout).send();
}
其xml的解析也十分之清爽,无需在实体类上面另外添加注解
代码语言:javascript复制import org.junit.Test;
import org.nutz.http.Http;
import org.nutz.lang.Xmls;
import org.nutz.lang.util.NutMap;
import java.util.HashMap;
import java.util.Map;
public class NutzTest {
@Test
public void test2() {
// 参考值
String xml = "<?xml version="1.0"?>n"
"<body xmlns:xsd="xxx" xmlns:xsi="ccc">n"
" <head>n"
" <ret_code>-1</ret_code>n"
" <ret_info>查询无结果</ret_info>n"
" </head>n"
"</body>n";
// 解析为map
NutMap nutMap = Xmls.xmlToMap(xml);
// 打印结果
System.out.println("nutMap = " nutMap);
// 若需转换为相应的实体类,可先将其转换为json再转换为实体类
//(仅供参考)
}
}
另附上部分相关源码
代码语言:javascript复制/**
* 将一个下面格式的 XML:
*
* <pre>
* <xml>
* <key1>value1</key1>
* <key2>value2</key2>
* </xml>
* </pre>
*
* 转换成一个 Map
*
* @param xml
* XML 字符串
*
* @return Map
*/
public static NutMap xmlToMap(String xml) {
return Xmls.asMap(Xmls.xml(Lang.ins(xml)).getDocumentElement());
}
public static NutMap xmlToMap(InputStream ins) {
return Xmls.asMap(Xmls.xml(ins).getDocumentElement());
}
public static NutMap xmlToMap(InputStream ins, final boolean lowerFirst, final boolean dupAsList, final List<String> alwaysAsList) {
return Xmls.asMap(Xmls.xml(ins).getDocumentElement(), lowerFirst, dupAsList, alwaysAsList);
}
/**
* 将一个 Map 转换成 XML 类似:
*
* <pre>
* <xml>
* <key1>value1</key1>
* <key2>value2</key2>
* </xml>
* </pre>
*
* @param map
* Map
* @return XML 字符串
*/
public static String mapToXml(Map<String, Object> map) {
return mapToXml("xml", map);
}
public static String mapToXml(String root, Map<String, Object> map) {
StringBuilder sb = new StringBuilder();
map2Tag(root, map).toXml(sb, 0);
return sb.toString();
}
另外其还封装了单表操作,sql查询等...若有需要此工具的可以去官网了解一下
Nutz-程序员小伙伴们的另一个选择 - Nutz (nutzam.com)
www.nutzam.com