Jul 10, 2017 10:38:44 AM

作者:

为什么有这个package

简单来说, 这个package是对UrlConnection操作的薄封装.

远没有apache http client的完善,但足以满足一般的http请求了.

基本请求

POST请求

  1. parms.put("version", "NutzTest");
  2. parms.put("website", Nutz.version());
  3. String response = Http.post("http://nutztest.herokuapp.com/",
  4. parms,
  5. 5 * 1000); // 可以同时设置超时时间
  6. assertNotNull(response);
  7. assertTrue(response.length() > 0);
  8. assertEquals(response,
  9. String.format("version: %s, website: %s",
  10. "NutzTest",

响应的编码

  1. // 根据Http头的Content-Type自动识别编码类型
  2. Response response1 = Http.get("www.duokan.com");
  3. assertEquals("utf-8", response1.getEncodeType().toLowerCase());
  4. assertTrue(response1.getContent().indexOf("多看") > 0);
  5. // 如果Http头中没有指定编码类型,用户也可以手工指定
  6. Response response2 = Http.get("www.exam8.com/SiteMap/Article1.htm");
  7. assertTrue(response2.getContent("GBK").indexOf("考试吧") > 0);

上传文件

设置代理及代理回落

设置http代理

  1. Http.setHttpProxy("fuck_fbx.com", 8080);
  1. Http.setAutoSwitch(true);

关于自签名的Https证书

关闭jvm的证书检查(Nutz全局).

异步执行

基本流程

  1. // 传入回调,可以是null,如果你不在意结果的话.
  2. Sender.create(req).send(new Callback<Response>() {
  3. public void invoke(Response resp) {
  4. // 对resp进行xxoo
  5. }
  6. });
  7. // 程序结束前, shutdown之. 注意,是整个程序关闭前,不是方法执行之后.
  8. Sender.shutdown();

设置SSLSocketFactory

如铁道部网站的https证书是自签名的,然后不想全局关闭https检查,那么可以为Sender单独设置SSLSocketFactory

  1. Sender.create(req).setSSLSocketFactory(Http.nopSSLSocketFactory()).send();

Cookie的用法

发送cookie