zl程序教程

您现在的位置是:首页 >  其他

当前栏目

坚若磐石的工具类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>
 * &lt;xml&gt;
 * &lt;key1&gt;value1&lt;/key1&gt;
 * &lt;key2&gt;value2&lt;/key2&gt;
 * &lt;/xml&gt;
 * </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>
 * &lt;xml&gt;
 * &lt;key1&gt;value1&lt;/key1&gt;
 * &lt;key2&gt;value2&lt;/key2&gt;
 * &lt;/xml&gt;
 * </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