Java Http請求工具
阿新 • • 發佈:2019-12-31
Java Rest請求工具
一、新增依賴
<dependency>
<groupId>cn.gjing</groupId>
<artifactId>tools-httpclient</artifactId>
<version>1.2.6</version>
</dependency>
複製程式碼
二、使用說明
返回值型別最好與目標方法一致
,否則可能會出現轉換異常,在不確認返回型別時最好使用String
去接收。在請求結束後,可以通過get()
方法獲取返回的內容,也可以通過listener()
方法指定監聽者去監聽結果返回後的處理邏輯
1、無引數請求
public class Test{
public static void main(String[] args) {
String result = HttpClient.builder("http://127.0.0.1:8080/test",HttpMethod.GET,String.class)
.execute()
.get();
System.out.println(result);
}
}
複製程式碼
2、帶請求頭請求
public class Test{
public static void main(String[] args) {
Map<String,String> map = new HashMap<>(16);
map.put("head","111");
HttpClient.builder("http://127.0.0.1:8080/test6",String.class)
.header(map)
.execute()
.listener(System.out::println);
}
}
複製程式碼
3、攜帶引數
public class Test{
public static void main(String[] args) {
Map<String,Object> param = new HashMap<>();
param.put("id","1");
HttpClient.builder("http://127.0.0.1:8080/test6",String.class)
.param(param)
.execute()
.listener(System.out::println);
}
}
複製程式碼
4、攜帶JSON
可以是JSON字串、Map、JSON對應實體物件,這裡演示通過map傳遞
public class Test{
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("key","code");
map.put("val","200");
Map resultMap = HttpClient.builder("http://127.0.0.1:8080/test6",HttpMethod.POST,Map.class)
.body(map)
.execute()
.get();
}
}
複製程式碼
5、設定超時時間
可以分別設定讀超時時間(預設5000ms
)和連線超時時間(預設2000ms
)
public class Test{
public static void main(String[] args) {
Map<String,String.class)
.param(param)
//讀超時時間
.readTimeout(5000)
//連線超時時間
.connectTimeout(2000)
.execute()
.listener(System.out::println);
}
}
複製程式碼
6、異常回退
一旦發起請求出現了錯誤會進入該回退,預設丟擲HttpException
,你可以自行定義回退邏輯,該方法要在執行execute()
請求方法之前呼叫,否則無效。該方法會將錯誤資訊通知給你
public class Test{
public static void main(String[] args) {
Map<String,Map.class)
.body(map)
.fallback(e -> {
throw new ServiceException("哎。回退把");
})
.execute()
.get();
}
}
複製程式碼
三、 UrlUtils工具類
1、url拼接
Url拼接,返回結果格式如: http://xxx/param1/param2
public static void main(String[] args) {
String url = "http://127.0.0.1:8080/";
Object[] param = {1,2,3,4};
UrlUtil.urlAppend(url,param);
}
複製程式碼
2、引數排序
引數按照欄位名的Unicode碼從小到大排序(字典序),得到的結果格式如: a=引數1&b=引數2
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>(16);
map.put("a","引數1");
map.put("b","引數2");
UrlUtil.paramUnicodeSort(map,false,false);
}
複製程式碼
引數說明
引數 | 描述 |
---|---|
paramMap | 引數 |
urlEncode | 是否進行URL編碼 |
keyToLower | 轉換後的引數的key值是否要轉為小寫 |
3、url引數轉map
將URL地址後帶的引數轉成map
public static void main(String[] args) {
String url = "http://127.0.0.1:8080?a=2&b=2";
UrlUtil.toMap(url);
}
複製程式碼
專案原始碼可前往GitHUb檢視:tools-httpclient