1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      HttpClient怎么在.NETCore中使用-創(chuàng)新互聯(lián)

      今天就跟大家聊聊有關(guān)HttpClient怎么在.NET Core中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

      成都創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!成都創(chuàng)新互聯(lián)公司具備承接各種類型的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計項目的能力。經(jīng)過十多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

      一、直接使用方式


      不管是哪種方式,都要先注冊服務(wù),對于 ASP.NET Core 應(yīng)用則是在 Startup.cs 文件的 ConfigureServices 添加如果代碼:

      services.AddHttpClient();

      然后在 Controller 中通過構(gòu)造注入的試獲得 IHttpClientFactory,然后通過它來創(chuàng)建 HttpClient 對象。示例代碼:

      public class ValuesController : BaseController
      {
       private readonly IHttpClientFactory _httpClientFactory;
       public ValuesController(IHttpClientFactory httpClientFactory)
       {
        _httpClientFactory = httpClientFactory;
       }
      
       [HttpGet]
       public async Task Get()
       {
        var client = _httpClientFactory.CreateClient();
        client.BaseAddress = new Uri("http://api.github.com");
        string result = await client.GetStringAsync("/");
        return Ok(result);
       }
      }

      這種使用方式適合一次性的 HTTP 請求調(diào)用,弊端是如果多次都要請求 github 的接口,那就得寫很多重復(fù)代碼配置 HttpClient。

      二、命名式使用方式


      命名式的使用方式可以解決第一種方式的問題,對于特定域名的 HTTP 調(diào)用,可以只做一次配置,然后在多個地方通過名稱拿到相同的 Client 來使用。

      首先在 Startup.cs 注冊服務(wù)的地方添加帶有特定名稱的 HttpClient 服務(wù),并添加需要的配置,如下示例:

      services.AddHttpClient();
      services.AddHttpClient("github", c =>
      {
       c.BaseAddress = new Uri("https://api.github.com/");
       c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
       c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
      });

      注意這里添加了兩次 AddHttpClient,一次是沒有命名的,一次是有命名的。在 Controller 中的使用方式是:

      public class ValuesController : BaseController
      {
       private readonly IHttpClientFactory _httpClientFactory;
      
       public ValuesController(IHttpClientFactory httpClientFactory)
       {
        _httpClientFactory = httpClientFactory;
       }
      
       [HttpGet]
       public async Task Get()
       {
        var client = _httpClientFactory.CreateClient("github");
        string result = await client.GetStringAsync("/");
        return Ok(result);
       }
      }

      但如果使用很頻繁,這種獲取 Client 的方式還是有一點麻煩。下面介紹第三種方式,可以在使用的時候方便一點,但配置要麻煩些。

      三、類型化使用方式


      類型化的使用方式可以預(yù)先把配置放到自定義的 HttpClient 中,然后在需要的地方都過依賴注入直接拿到 HttpClient 實例。

      我們來看具體的例子,首先自定義一個 HttClient 類,比如訪問 github 接口的類可以這樣定義:

      public class GitHubClient
      {
       public HttpClient Client { get; private set; }
      
       public GitHubClient(HttpClient httpClient)
       {
        httpClient.BaseAddress = new Uri("https://api.github.com/");
        httpClient.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
        httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
        Client = httpClient;
       }
      
       public async Task GetData()
       {
        return await _client.GetStringAsync("/");
       }
      }

      這里的 GetData 就是額外擴(kuò)展的共用方法。使用前需要為這個類注冊服務(wù):

      services.AddHttpClient();

      然后在需要的地方(比如 Controller)中這樣使用:

      public class ValuesController : BaseController
      {
       private readonly GitHubClient _gitHubClient;;
      
       public ValuesController(GitHubClient gitHubClient)
       {
        _gitHubClient = gitHubClient;
       }
      
       [HttpGet]
       public async Task Get()
       {
        string result = await _gitHubClient.GetData();
        return Ok(result);
       }
      }

      類型化的方式和命名式的方式相比,雖然在配置的時候會麻煩一點,但它有兩個好處:一是不用通過名稱字符串來獲得 Client,而是直接通過依賴注入獲得具體的 Client;二是可以在自定義的 HttpClient 類中擴(kuò)展共用的方法。

      看完上述內(nèi)容,你們對HttpClient怎么在.NET Core中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


      分享標(biāo)題:HttpClient怎么在.NETCore中使用-創(chuàng)新互聯(lián)
      本文網(wǎng)址:http://www.ef60e0e.cn/article/djhgde.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        泰安市| 合作市| 云浮市| 同心县| 蒙阴县| 白银市| 乌兰浩特市| 晴隆县| 黄陵县| 庆安县| 唐海县| 扶风县| 甘泉县| 获嘉县| 长岭县| 南投县| 康平县| 商河县| 墨玉县| 达日县| 和田市| 萝北县| 黄山市| 铁岭市| 新余市| 开封市| 永和县| 怀仁县| 泰来县| 黔江区| 嘉荫县| 珠海市| 清苑县| 闽清县| 定西市| 河北区| 新野县| 西乌珠穆沁旗| 手机| 大冶市| 柳江县|