该工具包清晰简单可配置,能用于spring、vertX、Android等框架
使用最低版本为jdk1.8
1. 引入依赖
引入maven依赖
<!-- https://mvnrepository.com/artifact/io.github.HollandZang/http -->
<dependency>
<groupId>io.github.HollandZang</groupId>
<artifactId>http</artifactId>
<version>1.1</version>
</dependency>
引入gradle依赖
// https://mvnrepository.com/artifact/io.github.HollandZang/http
implementation group: 'io.github.HollandZang', name: 'http', version: '1.1'
2. 使用方式
配置项
spring引入
可以直接调new ZnHttp()使用默认配置,也可以继承默认实现类DefaultZnHttpConf、或实现配置接口ZnHttpConf
@Configuration
public class MyConfig {
@Bean
public ZnHttp znHttp() {
return new ZnHttp(new DefaultZnHttpConf() {
@Override
public void printError(String s, Object... args) {
logger.error(s,args);
}
@Override
public String toJson(Object data) {
return JSON.toJSONString(data);
}
});
}
}
默认配置一览
public class DefaultZnHttpConf implements ZnHttpConf {
@Override
public OkHttpClient getClient() {
return new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
}
@Override
public final Request.Builder myRequest(Map<String, String> headers) {
Request.Builder builder = new Request.Builder()
.addHeader("Connection", "keep-alive")
.addHeader("Accept", "*/*");
if (headers != null) {
headers.forEach(builder::addHeader);
}
return builder;
}
@Override
public void printError(String s, Object... args) {
final String format = String.format(s.replace("{}", "%s"), args);
System.err.println(format);
final Exception exception = (Exception) args[args.length - 1];
System.err.println(Arrays.stream(exception.getStackTrace()).map(StackTraceElement::toString).collect(Collectors.joining("\n\t")));
}
@Override
public String formatParam(Object param) {
if (param instanceof Date) {
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.format((Date) param);
} else if (param instanceof LocalDateTime) {
return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format((Temporal) param);
} else if (param instanceof LocalDate) {
return DateTimeFormatter.ofPattern("yyyy-MM-dd").format((Temporal) param);
} else if (param instanceof LocalTime) {
return DateTimeFormatter.ofPattern("HH:mm:ss").format((Temporal) param);
} else {
return param.toString();
}
}
@Override
public String toJson(Object data) {
final Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();
return data != null ? gson.toJson(data) : "";
}
}
官方示例
同步请求
public class SyncDemo {
public static void main(String[] args) {
getDemo();
postFormDemo();
postJsonDemo();
}
public static void getDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
final Optional<String> s = new ZnHttp().sync.get("http://www.baidu.com", null, data);
final String s1 = s.orElse("asd");
System.out.println("getDemo::\n" + s1);
}
public static void postFormDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
final Optional<String> s = new ZnHttp().sync.postForm("http://www.baidu.com", null, data);
final String s1 = s.orElse("asd");
System.out.println("postFormDemo::\n" + s1);
}
public static void postJsonDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
final Optional<String> s = new ZnHttp().sync.postJson("http://www.baidu.com", null, data);
final String s1 = s.orElse("asd");
System.out.println("postJsonDemo::\n" + s1);
}
}
异步请求
public class AsyncDemo {
public static void main(String[] args) throws InterruptedException {
getDemo();
postFormDemo();
postJsonDemo();
Thread.sleep(1000);
System.exit(1);
}
public static void getDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
new ZnHttp().async.get("http://www.baidu.com", null, data, response -> {
try {
System.out.println("getDemo::\n" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
});
}
public static void postFormDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
new ZnHttp().async.get("http://www.baidu.com", null, data, response -> {
try {
System.out.println("postFormDemo::\n" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
});
}
public static void postJsonDemo() {
final Map<String, Object> data = new HashMap<>();
data.put("t1", LocalDateTime.now());
data.put("t2", LocalTime.now());
data.put("t3", LocalDate.now());
new ZnHttp().async.get("http://www.baidu.com", null, data, response -> {
try {
System.out.println("postJsonDemo::\n" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
3. 其他
想要发布自己的jar包到maven仓库吗? 点击链接学习