HttpClientUtil.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.kingdee.eas.custom.synctask.util;
  2. import okhttp3.*;
  3. import org.apache.log4j.Logger;
  4. import java.io.IOException;
  5. import java.security.MessageDigest;
  6. import java.util.Map;
  7. import java.util.concurrent.TimeUnit;
  8. import com.alibaba.fastjson.JSONObject;
  9. public class HttpClientUtil {
  10. private static final Logger logger = Logger.getLogger(HttpClientUtil.class);
  11. private static final OkHttpClient client = new OkHttpClient.Builder()
  12. .connectTimeout(30, TimeUnit.SECONDS)
  13. .readTimeout(30, TimeUnit.SECONDS)
  14. .build();
  15. /**
  16. * 发送 POST 请求(JSON 格式)
  17. * @param urlPath 接口地址(可含路径参数,如 `/api/v2/transaction/get`)
  18. * @param params JSON 请求体
  19. * @param queryParams URL 查询参数(如 `timestamp` 和 `token`)
  20. * @return 响应体字符串(失败返回 null)
  21. */
  22. public static String sendPostRequest(String urlPath, JSONObject params, Map<String, String> queryParams) {
  23. try {
  24. // 1. 构建完整 URL(含查询参数)
  25. HttpUrl.Builder urlBuilder = HttpUrl.parse(urlPath).newBuilder();
  26. if (queryParams != null) {
  27. queryParams.forEach(urlBuilder::addQueryParameter);
  28. }
  29. String fullUrl = urlBuilder.build().toString();
  30. // 2. 创建请求体
  31. MediaType mediaType = MediaType.parse("application/json");
  32. RequestBody body = RequestBody.create(mediaType, params.toJSONString());
  33. // 3. 构建请求
  34. Request request = new Request.Builder()
  35. .url(fullUrl)
  36. .post(body)
  37. .addHeader("Content-Type", "application/json")
  38. .build();
  39. // 4. 发送请求并处理响应
  40. try (Response response = client.newCall(request).execute()) {
  41. if (response.isSuccessful() && response.body() != null) {
  42. return response.body().string();
  43. } else {
  44. logger.error("请求失败,状态码: " + response.code());
  45. }
  46. }
  47. } catch (IOException e) {
  48. logger.error("请求异常: " + e.getMessage(), e);
  49. }
  50. return null;
  51. }
  52. }