<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Let's go

      Java調用第三方WebApi

      使用 HttpClent調用

      mport com.alibaba.fastjson2.JSONObject;
      import com.github.pagehelper.PageInfo;
      import com.sail.common.core.constant.HttpStatus;
      import com.sail.common.core.web.page.TableDataInfo;
      import org.apache.http.NameValuePair;
      import org.apache.http.client.config.RequestConfig;
      import org.apache.http.client.methods.HttpPost;
      import org.apache.http.impl.client.CloseableHttpClient;
      import org.apache.http.impl.client.HttpClients;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.apache.http.HttpResponse;
      import org.apache.http.client.HttpClient;
      import org.apache.http.client.entity.UrlEncodedFormEntity;
      import org.apache.http.client.methods.CloseableHttpResponse;
      import org.apache.http.client.methods.HttpGet;
      import org.apache.http.entity.StringEntity;
      import org.apache.http.impl.client.HttpClientBuilder;
      import org.apache.http.message.BasicNameValuePair;
      import org.apache.http.util.EntityUtils;
      import java.io.IOException;
      import java.net.URI;
      import java.net.URISyntaxException;
      import java.util.ArrayList;
      import java.util.Map;
      import java.util.Set;
      import java.util.*;
      
      public class KingdeeToken {
          private static final Logger log = LoggerFactory.getLogger(KingdeeToken.class);
          /**
           * 金蝶服務器IP
           */
          public static String ip="";
          /**
           * 金蝶授權碼
           */
          public static String authorityCode="";
          /**
           * Token有效期s
           */
          public static int tokenvValidity=0;
          /**
           * 最多要展示的條數
           */
          public  static int top=100;
      
          // 存儲API Key和它的過期時間
          private static String originalToken = "";//原始apikey
          private static Map<String, Date> tokenCache = new HashMap<>();
      
          // 判斷API Key是否過期
          private static void getValidApiKey() {
              Date now = new Date();
              Date expirationTime = tokenCache.get(originalToken);
              // 如果緩存中沒有或者已過期,則重新緩存
              if (expirationTime == null || now.after(expirationTime)) {
                  // 設置60分鐘后的過期時間
                  Date newExpirationTime = new Date(now.getTime() + tokenvValidity * 1000L);
                  originalToken=GetNewApiKey();
                  tokenCache = new HashMap<>();//重新初始化
                  tokenCache.put(originalToken, newExpirationTime);//把最新的Token緩存起來
              }
          }
      
      
          /**
           * @param url 請求的url
           * @param map 請求時參數會自動變為key1=value1&key2=value2,contentType也會自動變為application/x-www-form-urlencoded
           * @return 獲取相應內容
           */
          //map入參
          public static String PostUrlEncoded(String url, Map<String, String> map) throws IOException {
              //創建httpClient對象
              CloseableHttpClient httpClient = HttpClients.createDefault();
              //創建請求方法的實例
              HttpPost httpPost = new HttpPost();
              try {
                  httpPost.setURI(new URI(url));
              } catch (URISyntaxException e) {
                  e.getMessage();
              }
              //設置傳輸超時時間
              RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(30000).build();
              httpPost.setConfig(requestConfig);
              //添加請求參數
              ArrayList<NameValuePair> arrayList = new ArrayList<>();
              Set<Map.Entry<String, String>> entrySet = map.entrySet();
              for (Map.Entry<String, String> entry : entrySet) {
                  String key = entry.getKey();
                  String value = entry.getValue();
                  arrayList.add(new BasicNameValuePair(key, value));
              }
              httpPost.setEntity(new UrlEncodedFormEntity(arrayList));
              //發送http請求
              CloseableHttpResponse response = httpClient.execute(httpPost);
              //獲取返回的內容
              String result;
              int statusCode = response.getStatusLine().getStatusCode();
              if (statusCode == 200) {
                  result = EntityUtils.toString(response.getEntity());
              } else {
                  log.info("請求接口出現錯誤,狀態碼為:{}", statusCode);
                  return null;
              }
              return result;
          }
      
          /**
           * 封裝POST請求(String入參)
           *
           * @param url  請求的路徑
           * @param data String類型json格式數據
           * @return 獲取相應內容
           */
          public static String postJson(String url, String data) throws IOException {
              //創建HttpClient對象
              HttpClient httpClient = HttpClientBuilder.create().build();
              //創建請求方式的實例
              HttpPost httpPost = new HttpPost(url);
              //添加請求參數(設置請求和傳輸超時時間)
              RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
              httpPost.setConfig(requestConfig);
              //設置請求頭
              httpPost.setHeader("Accept", "application/json");
              httpPost.setHeader("Content-Type", "application/json");
              //設置請求參數
              httpPost.setEntity(new StringEntity(data, "UTF-8"));
              //發送Http請求
              HttpResponse response = httpClient.execute(httpPost);
              //獲取返回的內容
              String result;
              int statusCode = response.getStatusLine().getStatusCode();
              if (200 == statusCode) {
                  result = EntityUtils.toString(response.getEntity());
              } else {
                  log.info("請求接口出現錯誤,狀態碼為:{}", statusCode);
                  return null;
              }
              return result;
          }
      
          /**
           * 封裝GET請求
           *
           * @param url 請求地址
           * @return 相應內容
           */
          public static String get(String url) throws IOException {
              //1、創建HttpClient對象
              HttpClient httpClient = HttpClientBuilder.create().build();
              //2、創建請求方式的實例
              HttpGet httpGet = new HttpGet(url);
              //3、添加請求參數(設置請求和傳輸超時時間)
              RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
              httpGet.setConfig(requestConfig);
              //4、發送Http請求
              HttpResponse response = httpClient.execute(httpGet);
              //5、獲取返回的內容
              String result;
              int statusCode = response.getStatusLine().getStatusCode();
              if (200 == statusCode) {
                  result = EntityUtils.toString(response.getEntity());
              } else {
                  log.info("請求接口出現錯誤,狀態碼為:{}", statusCode);
                  return null;
              }
              return result;
          }
      
      
          /**
           * 獲取金蝶的Token
           * @return
           */
          public static String GetNewApiKey(){
              String result="";
              String urlStr="http://"+ip+"/K3API/Token/Create?authorityCode="+authorityCode;
              try{
                  result=get(urlStr);
                  JSONObject jsonObject = JSONObject.parseObject(result);
                  JSONObject data = jsonObject.getJSONObject("Data");
                  originalToken= data.getString("Token");
              }catch (Exception e){
                  log.error("請求異常", e);
              }
              return originalToken;
          }
      
          /**
           * 金蝶的Get方法
           * @param httpUrl
           * @return
           */
          public static String doGetKis(String httpUrl){
              getValidApiKey();
              httpUrl="http://"+ip+httpUrl+"?token"+originalToken;
              try {
                  return get(httpUrl);
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
          }
      
          /**
           *  金蝶的Post方法
           * @param httpUrl
           * @param param
           * @return
           */
          public static String doPostKis(String httpUrl, String param){
              getValidApiKey();
              httpUrl="http://"+ip+httpUrl+"?token="+originalToken;
              String rst= null;
              try {
                  rst = postJson(httpUrl, param);
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
              return rst;
          }
      
          public static TableDataInfo getDataTable(List<?> list,int total)
          {
              TableDataInfo rspData = new TableDataInfo();
              rspData.setCode(HttpStatus.SUCCESS);
              rspData.setRows(list);
              rspData.setMsg("查詢成功");
              rspData.setTotal(total);
              return rspData;
          }
      }

      調用

      ObjectMapper mapper = new ObjectMapper();
      String jsonResult = mapper.writeValueAsString(queryData);
      result=KingdeeToken.doPostKis(url,jsonResult);
      listReturnMain = JSON.parseObject(result, ListReturnMain.class);

      其他

      posted @ 2025-08-04 09:43  chenze  閱讀(7)  評論(0)    收藏  舉報
      有事您Q我
      主站蜘蛛池模板: 精品视频福利| 亚洲一级特黄大片在线观看| 国产色爱av资源综合区| 中文字幕日本六区小电影| 亚洲伊人久久大香线蕉| 美女禁区a级全片免费观看| 欧美激情一区二区三区在线| 国产揄拍国产精品| 无码AV无码免费一区二区| 柞水县| 久久久久久久久久久久中文字幕| 久久久久免费看少妇高潮A片| 成人无码午夜在线观看| 亚洲日韩国产精品第一页一区| 久久99国内精品自在现线| 国产精品午夜福利精品| 激情综合色综合啪啪五月| 性一交一乱一伦| 国产成人精品日本亚洲网站| 视频一区二区三区自拍偷拍| 精品一区二区不卡免费| 2018天天拍拍天天爽视频| 久久国内精品自在自线91 | 丝袜a∨在线一区二区三区不卡| 日本中文字幕有码在线视频| 国产国语一级毛片| 国产色无码专区在线观看| 日本五十路熟女一区二区| 亚洲午夜无码av毛片久久| 精品国产av一区二区果冻传媒| 亚洲色欲色欱WWW在线| 激情内射亚洲一区二区三区| 国产精品区一二三四久久| 国产成人午夜在线视频极速观看| 久国产精品韩国三级视频| 国产初高中生粉嫩无套第一次| 欧美日产国产精品日产| 亚洲成亚洲成网中文字幕| 日韩人妻无码精品系列| 色吊丝中文字幕在线观看 | 亚洲AV永久无码天堂网一线|