Jfinal HttpKit post使用

/**
 * Send POST request
 */
public static String post(String url, Map<String, String> queryParas, String data, Map<String, String> headers) {
   HttpURLConnection conn = null;
   try {
      // conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
      conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), POST, headers);
      conn.connect();
      
      if (data != null) {
         OutputStream out = conn.getOutputStream();
         out.write(data.getBytes(CHARSET)); // ???
         out.flush();
         out.close();
      }
      
      return readResponseString(conn);
   }
   catch (Exception e) {
      throw new RuntimeException(e);
   }
   finally {
      if (conn != null) {
         conn.disconnect();
      }
   }
}


一直不明白这个工具类中的String data参数代表什么?

比如说,现在想用这个HttpKit工具类模仿一个普通的jquery ajax post请求,

这个data参数应该如何设置比较好?当然,基本功比较菜,Http工具类里面的细节一直没有理解。

评论区

杜福忠

2018-06-13 14:10

一种:
nameA=1&nameB=2&nameC=3

maxwade

2018-06-13 16:56

@杜福忠 想请教下,一般会把请求参数封装成Map queryParas,buildUrlWithQueryString(queryParas)也是将map中的数据转为nameA=1&nameB=2&nameC=3 (见源码),那data和这个queryParas有什么区别呢?

杜福忠

2018-06-13 17:26

@maxwade 二种:
可以直接放 Json字符串啊, 一般这样:
HttpKit.post(url, JsonKit.toJson(map))

杜福忠

2018-06-13 17:32

@maxwade 现在接口开发都是参数JSON 数据的, 都这样写

maxwade

2018-06-13 17:34

@杜福忠 那个是客户端是app类型的,都是json交互。
假设get请求为http://www.baidu.com?a=1&b=2&c=3
那么,这种如何转成post请求,用HttpKit.post()实现?

杜福忠

2018-06-13 17:37

@maxwade HttpKit.post("http://www.baidu.com", "?a=1&b=2&c=3")
何不写个 main方法试试了~

maxwade

2018-06-13 19:11

@杜福忠 抓包试了下,HttpKit,post(url, map, null);这个本质上还是get请求,用HttpKit.post(ul, null, "a=1&b=2&c=3");这样是post请求。抓包可以看得出来

maxwade

2018-06-13 19:20

@杜福忠 上面的结论,已经验证多次了,不敢马虎

杜福忠

2018-06-13 19:50

@maxwade 嗯, 没问题, 我这样用一年多了 post(String url, String data)

热门反馈

扫码入社