OkHttpClientUtil.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.telerobot.fs.utils;
  2. import okhttp3.*;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import java.util.concurrent.TimeUnit;
  6. public class OkHttpClientUtil {
  7. private static final Logger logger = LoggerFactory.getLogger(OkHttpClientUtil.class);
  8. private static OkHttpClient httpClient;
  9. static{
  10. int httpConnPoolThreadNum = 10;
  11. httpClient = new OkHttpClient.Builder()
  12. .connectTimeout(10, TimeUnit.SECONDS)
  13. .readTimeout(10, TimeUnit.SECONDS)
  14. .connectionPool(new ConnectionPool(httpConnPoolThreadNum, 10L, TimeUnit.MINUTES))
  15. .build();
  16. logger.info(" OkHttpClient, The threads number of conn-pool: {}", httpConnPoolThreadNum);
  17. }
  18. /**
  19. * 请求远程api接口; (仅限json请求格式)
  20. * @param url api接口地址
  21. * @param json 请求参数
  22. * @return
  23. */
  24. public static String curl(String url, String json, String method){
  25. Request.Builder builder= null;
  26. if("post".equals(method)){
  27. RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
  28. builder = new Request.Builder()
  29. .post(requestBody)
  30. .url(url);
  31. }else{
  32. builder = new Request.Builder()
  33. .get()
  34. .url(url);
  35. }
  36. Request request = builder.build();
  37. Response response = null;
  38. try {
  39. response = httpClient.newCall(request).execute();
  40. } catch (Exception e) {
  41. logger.error(String.format("curl error, url: %s, request-json: %s, exception:%s",
  42. url, json, e.toString()
  43. ));
  44. return "";
  45. }
  46. String responseStr = "";
  47. try {
  48. responseStr = response.body().string();
  49. } catch (Exception e) {
  50. logger.error(String.format("curl error, url: %s, request-json: %s, exception:%s",
  51. url, json, e.toString()
  52. ));
  53. return "";
  54. }
  55. int httpStatus = response.code();
  56. if(httpStatus != 200) {
  57. logger.error(String.format("curl error, url: %s, request-json: %s, httpStatus:%d, response:%s",
  58. url, json, httpStatus, responseStr
  59. ));
  60. }
  61. return (httpStatus == 200) ? responseStr : "";
  62. }
  63. /**
  64. * 请求远程api接口;
  65. * @param url api接口地址
  66. * @param data 请求表单参数
  67. * @return
  68. */
  69. public static String postCdr(String url, String data){
  70. // RequestBody requestBody = new FormBody.Builder().add("cdr", data).build();;
  71. RequestBody requestBody = RequestBody.create(
  72. MediaType.parse("application/json; charset=utf-8"),
  73. data
  74. );
  75. // RequestBody requestBody = new FormBody.Builder().add("cdr", data).build();;
  76. Request.Builder builder = new Request.Builder()
  77. .post(requestBody)
  78. .url(url);
  79. Request request = builder.build();
  80. Response response = null;
  81. try {
  82. response = httpClient.newCall(request).execute();
  83. } catch (Exception e) {
  84. logger.error(String.format("post error, url: %s, request-json: %s, exception:%s",
  85. url, data, e.toString()
  86. ));
  87. return "";
  88. }
  89. String responseStr = "";
  90. try {
  91. responseStr = response.body().string();
  92. } catch (Exception e) {
  93. logger.error(String.format("post error, url: %s, request-json: %s, exception:%s",
  94. url, data, e.toString()
  95. ));
  96. return "";
  97. }
  98. int httpStatus = response.code();
  99. if(httpStatus != 200) {
  100. logger.error(String.format("post error, url: %s, request-json: %s, httpStatus:%d, response:%s",
  101. url, data, httpStatus, responseStr
  102. ));
  103. }
  104. return (httpStatus == 200) ? responseStr : "";
  105. }
  106. public static void main(String[] args) {
  107. String url = "http://192.168.66.82:30202/api/collcall/coll/caseDetails/savePhoneCallRecord";
  108. String json = "{\"answerTime\":1601203259000,\"callee\":\"17856923720\",\"caller\":\"1719\",\"caseNo\":\"SU2020061400013\",\"customerFirstHangup\":1,\"endTime\":1601203264000,\"extNum\":\"1719\",\"fullRecordPath\":\"1719_17856923720_uuid-20200927184053-1719.wav\",\"hangupCause\":\"NORMAL_CLEARING\",\"id\":\"202009271841041000001\",\"opNum\":\"admin\",\"projectId\":\"robotv4\",\"record_type\":\".wav\",\"savedCdr\":0,\"startTime\":1601203254000,\"timeLen\":10,\"uuid\":\"uuid-20200927184053-1719\",\"validTimeLen\":5}";
  109. String response = OkHttpClientUtil.curl(url, json, "post");
  110. System.out.println(response);
  111. }
  112. }