You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
3.9 KiB
Java

2 years ago
package com.engine.custom.yunxuetang.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class HttpClientUtil {
/**
* post.
*
* @param pathUrl .
* @param dataStr .
* @param accessToken accessToken.
* @return str.
*/
public static String doPost(String pathUrl, String dataStr, String accessToken) {
// 请求参数转换为json字符串
// String dataStr = JSON.toJSONString(dataMap);
String result = null;
try {
// 组装请求头信息
Map<String, String> header = new HashMap<>(2);
header.put("Content-Type", "application/json;charset=utf-8");
if (accessToken != null && accessToken.length() > 0) {
header.put("Authorization", accessToken);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json;charset=utf-8");
RequestBody body = RequestBody.create(mediaType, dataStr);
Request request = new Request.Builder()
.url(pathUrl) // 请求接口地址
.method("POST", body) // 设定请求的方法为"POST"
.headers(Headers.of(header)) // 请求头信息
.build();
Response response = client.newBuilder().readTimeout(300000L, TimeUnit.MILLISECONDS).build().newCall(request).execute();
result = response.body().string();
} catch (Exception e) {
System.out.println("执行包含头部的post请求,url:" + pathUrl + ",请求数据:" + dataStr + ",执行错误信息:" + e);
}
return result;
}
/**
* get.
*
* @param pathUrl .
* @param accessToken accessToken.
* @return str.
*/
public static String doGet(String pathUrl, String accessToken) {
String result = null;
try {
// 组装请求头信息
Map<String, String> header = new HashMap<>(2);
header.put("Content-Type", "application/json;charset=utf-8");
if (accessToken != null && accessToken.length() > 0) {
header.put("Authorization", accessToken);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
// http创建的request对象默认是get请求
Request request = new Request.Builder()
.url(pathUrl) // 请求接口地址
.headers(Headers.of(header)) // 请求头信息
.build();
Response response = client.newBuilder().readTimeout(300000L, TimeUnit.MILLISECONDS).build().newCall(request).execute();
result = response.body().string();
} catch (Exception e) {
System.out.println("执行包含头部的get请求,url:" + pathUrl + ",执行错误信息:" + e);
}
return result;
}
// 获取accessToken
public static String getAccessToken(String url,String appId,String appSecret) {
Map<String, Object> body = new HashMap<>();
String dataStr = JSON.toJSONString(body);
// url拼接所需参数
String pathUrl = url + "?" + "appId=" + appId + "&appSecret=" + appSecret;
// 以post方式调用第三方接口,获取响应结果
String result = HttpClientUtil.doPost(pathUrl, dataStr, null);
// 返回accessToken
JSONObject jsonObject = JSON.parseObject(result, JSONObject.class);
return jsonObject.getString("accessToken");
}
}