package com.jttech.pfcs.services.impl; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSONObject; import com.jttech.pfcs.services.IBillService; import com.jttech.pfcs.vo.ResponseVo; import com.jttech.pfcs.vo.req.bill.BillApiReqVo; import com.jttech.pfcs.vo.req.bill.BillApiRespVo; import okhttp3.*; /** * 账单服务 * @author wanghc * @version 1.0.0 * @date 2023-03-08 */ @Service public class BillServiceImpl implements IBillService { private Logger mLogger = LoggerFactory.getLogger(getClass()); private static final String contentType = "application/json;charset=utf-8"; /** * 请求编码格式 */ private static final String charset = "UTF-8"; private static final OkHttpClient client = new OkHttpClient.Builder() .connectionPool(new ConnectionPool(500, 5, TimeUnit.MINUTES)).connectTimeout(10000, TimeUnit.MILLISECONDS) .readTimeout(60000, TimeUnit.MILLISECONDS).build(); /** * post请求 * * @param reqVo * @return */ @Override public ResponseVo post(BillApiReqVo reqVo) { try { mLogger.info("BillServiceImpl.post reqvo={}", reqVo); Request request = new Request.Builder().url(reqVo.getUrl()) .post(RequestBody.create(MediaType.parse(contentType), JSONObject.toJSONString(reqVo))) .addHeader("Content-Type", contentType) .build(); Response resp = client.newCall(request).execute(); String body = new String(resp.body().bytes(), charset); mLogger.info("BillServiceImpl.post resp={}", body); return new ResponseVo(JSONObject.parseObject(body, BillApiRespVo.class)); } catch (Exception e) { mLogger.error("BillServiceImpl.post error={}", e); String errMsg = e.getMessage() == null ? "接口调用异常" : e.getMessage(); errMsg = errMsg.substring(0, Math.min(20, errMsg.length())); return ResponseVo.fail(-999, errMsg); } } }