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

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

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

      借助HttpWebRequest 調用第三方接口,獲取Token和數據

      在一次項目中,在給客戶做系統時,需要調用客戶的系統獲取數據,客戶提供了獲取Token和獲取數據的接口,用戶名和密碼,認證方式是基于Bearer的,通過學習和找資料,提供一個C#示例

      一個C#示例

      1、傳入語句獲取數據
               /// <summary>
              /// 傳入語句獲取數據
              /// </summary>
              /// <param name="param"></param>
              /// <returns></returns>
              public async Task<string> ThirdSystemDataPostAsync(string param,string dataUrlAddress)
              {
                  string token = await Bearer_TokenPostAsync();
                  _logger.Warn($"獲取Token結構:{token}");
                  string responseString = string.Empty;
                  try
                  {
                      var tokenJson = JsonConvert.DeserializeObject<TokenResultDto>(token);
                      _logger.Warn($"獲取Token值參數據:{tokenJson}");
      
                      //跳過ssl驗證
                      ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
                      // 創建HttpWebRequest對象
                      HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(dataUrlAddress);
                      _logger.Warn($"入參數據:{param}");
                      _logger.Warn($"智慧系統數據地址:{dataUrlAddress}");
                      // 設置Post調??法
                      httpRequest.Method = "Post";
                      //設置參數傳輸類型
                      httpRequest.ContentType = " application/json; charset=utf-8";
                      // 設置Http Bearer認證的請求頭
                      httpRequest.Headers.Add("Authorization", "Bearer " + tokenJson.accessToken);
                      //傳輸參數格式轉換
                      byte[] bytesRequestData = Encoding.UTF8.GetBytes(param);
                      //_logger.Warn($"入參數據格式轉換:{bytesRequestData}");
                      httpRequest.ContentLength = bytesRequestData.Length;
                      Stream postStream = await httpRequest.GetRequestStreamAsync();
                      postStream.Write(bytesRequestData, 0, bytesRequestData.Length);
                      postStream.Close();
                      //獲取設置身份認證及請求超時時間
                      SetWebRequest(httpRequest);
                      // HttpWebRequest發起調?
                      using (HttpWebResponse myResponse = (HttpWebResponse)httpRequest.GetResponse())
                      {
                          //myResponse.StatusCode
                          // StreamReader對象
                          StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
      
                          // 返回結果
                          responseString = sr.ReadToEnd();
      
                          _logger.Warn($"調用智慧系統返回結果數據:{responseString}");
                          return responseString;
                      }
                  }
                  catch (Exception ex)
                  {
                      //返回錯誤信息
                      responseString = ex.ToString();
                  }
                  return responseString;
      
              }
      
      2、獲取token
               /// <summary>
              /// 獲取token
              /// </summary>
              /// <returns></returns>
              private async Task<string> Bearer_TokenPostAsync(string sSoUrlAddress,string userName,string userPassword)
              {
                  string responseString = string.Empty;
                  try
                  {
                      // 創建HttpWebRequest對象
                      HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(sSoUrlAddress);
                      _logger.Warn($"智慧系統Token地址:{sSoUrlAddress}");
                      // 設置Post調??法
                      httpRequest.Method = "Post";
                      //設置參數傳輸類型
                      httpRequest.ContentType = " application/json; charset=utf-8";
                      // 設置用戶名和密碼
                      var usermesg = new UserMesgInput()
                      {
                          Username = userName,
                          Password = userPassword,
                          UserDetail = true
                      };
                      string base64 = JsonConvert.SerializeObject(usermesg);
                      //傳輸參數格式轉換
                      byte[] bytesRequestData = Encoding.UTF8.GetBytes(base64);
                      //_logger.Warn($"入參數據格式轉換:{bytesRequestData}");
                      httpRequest.ContentLength = bytesRequestData.Length;
      
                      Stream postStream = await httpRequest.GetRequestStreamAsync();
                      postStream.Write(bytesRequestData, 0, bytesRequestData.Length);
      
                      postStream.Close();
                      //獲取設置身份認證及請求超時時間
                      SetWebRequest(httpRequest);
                      _logger.Warn($"獲取設置身份認證及請求超時時間");
                      // HttpWebRequest發起調?
                      using (HttpWebResponse myResponse = (HttpWebResponse)httpRequest.GetResponse())
                      {
                          _logger.Warn($"StreamReader對象");
                          // StreamReader對象
                          StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                          //_logger.Warn($"返回結果{sr.ReadToEnd()}");
                          // 返回結果
                          responseString = sr.ReadToEnd();
                        
                          _logger.Warn($"調用智慧系統返回結果Token:{responseString}");
                          //return responseString;
                      }
                  }
                  catch (Exception ex)
                  {
                      //返回錯誤信息
                      responseString = ex.ToString();
                  }
                  return responseString;
              }
      
      3、獲取設置身份認證及請求超時時間
              /// <summary>
              /// 獲取設置身份認證及請求超時時間
              /// </summary>
              /// <param name="request"></param>
              private static void SetWebRequest(HttpWebRequest request)
              {
                  request.Credentials = CredentialCache.DefaultCredentials;
                  request.Timeout = 1000000;
      
              }
      
      4、在我使用的時候出現了下面的錯誤,通過查找是證書的問題,因為客戶的web訪問使用的IP地址訪問,所以在代碼中要加入跳過ssl驗證的一行代碼
      System.Net.WebException: The SSL connection could not be established, see inner exception. The remote certificate is invalid according to the validation procedure.
      
      posted @ 2024-03-18 21:42  悟自省  閱讀(486)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品无码人妻一区二区三区| 亚洲AV高清一区二区三区尤物| 佛冈县| 亚洲欧美日韩在线不卡| 中日韩黄色基地一二三区| 国产综合欧美| 无码日韩精品一区二区三区免费 | 亚洲中文字幕一区精品自| 好吊视频在线一区二区三区| 久爱www人成免费网站| 激情综合网激情综合| 亚洲乱理伦片在线观看中字| 久久99精品久久久久久9| 国产亚洲av手机在线观看| 欧美人与动牲交A免费观看| 色综合 图片区 小说区| 人妻18毛片A级毛片免费看| 又爽又黄又无遮挡的激情视频| 久久99九九精品久久久久蜜桃 | 浓毛老太交欧美老妇热爱乱| 91久久亚洲综合精品成人| 野外做受三级视频| 高潮潮喷奶水飞溅视频无码| 国产精品久久久久久久专区| 亚洲中文字幕成人综合网| 野花社区www视频日本| 狠狠色综合久久狠狠色综合| 日韩免费视频一一二区| 国产午夜鲁丝片av无码| 久久人与动人物a级毛片| 野外做受三级视频| 好紧好滑好湿好爽免费视频| 成人啪啪高潮不断观看| 国产亚洲精品第一综合另类| 亚洲一本二区偷拍精品| 精品久久精品久久精品久久| 亚洲欧美日韩久久一区二区| 国产欧美另类精品久久久| 日韩精品一二三黄色一级| 偷拍精品一区二区三区| 曰韩无码二三区中文字幕|