坚若磐石的工具类nutz(可能是国产的)
2023-04-18 16:11:07 时间
nutz国产注释工具类。开发者应该也是中国人,有其社区,目前开发人员还在解答疑问。
上pom
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
<version>1.r.68.v20190220</version>
</dependency>
其http请求的使用,十分之简洁
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相关请求以供参考。
/**
* 访问一个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的解析也十分之清爽,无需在实体类上面另外添加注解
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"?>
" +
"<body xmlns:xsd="xxx" xmlns:xsi="ccc">
" +
" <head>
" +
" <ret_code>-1</ret_code>
" +
" <ret_info>查询无结果</ret_info>
" +
" </head>
" +
"</body>
";
// 解析为map
NutMap nutMap = Xmls.xmlToMap(xml);
// 打印结果
System.out.println("nutMap = " + nutMap);
// 若需转换为相应的实体类,可先将其转换为json再转换为实体类
//(仅供参考)
}
}
另附上部分相关源码
/**
* 将一个下面格式的 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
相关文章
- 以数智制造全场景,用友U9cloud成传统ERP升级“收割机”
- 《数字化转型视点》:没有软件智能,企业就无法真正拥抱数字经济
- 人工智能技术助力新冠疫苗研发
- FCC的胜诉为Wi-Fi 6E的大规模升级扫清了道路
- 专家谈丨人工智能技术助力新冠疫苗研发
- 使用云服务的挑战:错误架构意味着僵化和失败
- 我用 5G 网络可以干什么?
- SUSE 发布面向本土化的 Rancher 企业版 2.6
- 云计算价值将进一步释放,迎接“深度用云”时代
- AI项目这些致命错误,你都犯过吗?
- 1个月内3次宕机,5G核心网上公有云靠谱吗?
- 混合云——企业的优秀解决方案?
- 亚马逊云科技和德甲推出两项新“赛况”,提供球队洞察增强球迷体验
- 信通院首批AIOps系统和工具评估,博睿数据获评异常检测模块“全面级”
- 解读:微软Azure中国区容量翻倍释放了哪些信息?
- 自定义 Traefik(本地)插件
- 现代Kubernetes测试的五大挑战
- Ack集群Terway网络场景下的vSwitch扩容
- “美人鱼”机器人登上Nature封面:入水瞬间四肢变脚蹼,首席编辑:按需进化
- 云迁移成功后,企业的六大好处