最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET Core使用HttpClient調(diào)用WebService

 更新時間:2022年03月26日 11:06:02   作者:.NET開發(fā)菜鳥  
這篇文章介紹了ASP.NET Core使用HttpClient調(diào)用WebService的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、創(chuàng)建WebService

我們使用VS創(chuàng)建一個WebService,增加一個PostTest方法,方法代碼如下

using System.Web.Services;

namespace WebServiceDemo
{
    /// <summary>
    /// WebTest 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消注釋以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebTest : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string PostTest(string para)
        {
            return $"返回參數(shù){para}";
        }
    }
}

創(chuàng)建完成以后,我們發(fā)布WebService,并部署到IIS上面。保證可以在IIS正常瀏覽。

二、使用HttpClient調(diào)用WebService

我們使用VS創(chuàng)建一個ASP.NET Core WebAPI項目,由于是使用HttpClient,首先在ConfigureServices方法中進行注入

public void ConfigureServices(IServiceCollection services)
{
    // 注入HttpClient
    services.AddHttpClient();
    services.AddControllers();
}

然后添加一個名為WebServiceTest的控制器,在控制器里面添加一個Get方法,在Get方法里面取調(diào)用WebService,控制器代碼如下

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Xml;

namespace HttpClientDemo.Controllers
{
    [Route("api/WebServiceTest")]
    [ApiController]
    public class WebServiceTestController : ControllerBase
    {
        readonly IHttpClientFactory _httpClientFactory;

        /// <summary>
        /// 通過構(gòu)造函數(shù)實現(xiàn)注入
        /// </summary>
        /// <param name="httpClientFactory"></param>
        public WebServiceTestController(IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }

        [HttpGet]
        public async Task<string> Get()
        {
            string strResult = "";
            try
            {
                // url地址格式:WebService地址+方法名稱     
                // WebService地址:http://localhost:5010/WebTest.asmx
                // 方法名稱:  PostTest
                string url = "http://localhost:5010/WebTest.asmx/PostTest";
                // 參數(shù)
                Dictionary<string, string> dicParam = new Dictionary<string, string>();
                dicParam.Add("para", "1");
                // 將參數(shù)轉(zhuǎn)化為HttpContent
                HttpContent content = new FormUrlEncodedContent(dicParam);
                strResult = await PostHelper(url, content);
            }
            catch (Exception ex)
            {
                strResult = ex.Message;
            }

            return strResult;
        }

        /// <summary>
        /// 封裝使用HttpClient調(diào)用WebService
        /// </summary>
        /// <param name="url">URL地址</param>
        /// <param name="content">參數(shù)</param>
        /// <returns></returns>
        private async Task<string> PostHelper(string url, HttpContent content)
        {
            var result = string.Empty;
            try
            {
                using (var client = _httpClientFactory.CreateClient())
                using (var response = await client.PostAsync(url, content))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        result = await response.Content.ReadAsStringAsync();
                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(result);
                        result = doc.InnerText;
                    }
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return result;
        }
    }
}

然后啟動調(diào)試,查看輸出結(jié)果

調(diào)試的時候可以看到返回結(jié)果,在看看頁面返回的結(jié)果 

這樣就完成了WebService的調(diào)用。生產(chǎn)環(huán)境中我們可以URL地址寫在配置文件里面,然后程序里面去讀取配置文件內(nèi)容,這樣就可以實現(xiàn)動態(tài)調(diào)用WebService了。我們對上面的方法進行改造,在appsettings.json文件里面配置URL地址

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  // url地址
  "url": "http://localhost:5010/WebTest.asmx/PostTest"
}

修改控制器的Get方法

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Xml;

namespace HttpClientDemo.Controllers
{
    [Route("api/WebServiceTest")]
    [ApiController]
    public class WebServiceTestController : ControllerBase
    {
        readonly IHttpClientFactory _httpClientFactory;
        readonly IConfiguration _configuration;

        /// <summary>
        /// 通過構(gòu)造函數(shù)實現(xiàn)注入
        /// </summary>
        /// <param name="httpClientFactory"></param>
        public WebServiceTestController(IHttpClientFactory httpClientFactory, IConfiguration configuration)
        {
            _httpClientFactory = httpClientFactory;
            _configuration = configuration;
        }

        [HttpGet]
        public async Task<string> Get()
        {
            string strResult = "";
            try
            {
                // url地址格式:WebService地址+方法名稱     
                // WebService地址:http://localhost:5010/WebTest.asmx
                // 方法名稱:  PostTest
                // 讀取配置文件里面設(shè)置的URL地址
                //string url = "http://localhost:5010/WebTest.asmx/PostTest";
                string url = _configuration["url"];
                // 參數(shù)
                Dictionary<string, string> dicParam = new Dictionary<string, string>();
                dicParam.Add("para", "1");
                // 將參數(shù)轉(zhuǎn)化為HttpContent
                HttpContent content = new FormUrlEncodedContent(dicParam);
                strResult = await PostHelper(url, content);
            }
            catch (Exception ex)
            {
                strResult = ex.Message;
            }

            return strResult;
        }

        /// <summary>
        /// 封裝使用HttpClient調(diào)用WebService
        /// </summary>
        /// <param name="url">URL地址</param>
        /// <param name="content">參數(shù)</param>
        /// <returns></returns>
        private async Task<string> PostHelper(string url, HttpContent content)
        {
            var result = string.Empty;
            try
            {
                using (var client = _httpClientFactory.CreateClient())
                using (var response = await client.PostAsync(url, content))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        result = await response.Content.ReadAsStringAsync();
                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(result);
                        result = doc.InnerText;
                    }
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return result;
        }
    }
}

這樣就可以動態(tài)調(diào)用WebService了。 

到此這篇關(guān)于ASP.NET Core使用HttpClient調(diào)用WebService的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.NET Core AutoWrapper 自定義響應(yīng)輸出實現(xiàn)

    ASP.NET Core AutoWrapper 自定義響應(yīng)輸出實現(xiàn)

    這篇文章主要介紹了ASP.NET Core AutoWrapper 自定義響應(yīng)輸出實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • .NET 緩存模塊設(shè)計實踐

    .NET 緩存模塊設(shè)計實踐

    這篇承接上篇對緩存的概念,框架上的理解,講講緩存模塊設(shè)計實踐過程,感興趣的小伙伴們可以參考一下
    2016-08-08
  • asp.net 用戶控件讀取以及賦值

    asp.net 用戶控件讀取以及賦值

    最近項目中看到同事寫的一個用戶控件,是一個下拉,值是從XML中讀取的,而且這部分還用到了LINQ讀取XML的知識,最近才看了一點點LINQ的知識,當(dāng)記錄一下吧。
    2009-07-07
  • Asp.net MVC scheduler的實現(xiàn)方法詳解

    Asp.net MVC scheduler的實現(xiàn)方法詳解

    這篇文章主要介紹了Asp.net MVC scheduler的實現(xiàn)方法詳解的相關(guān)資料,希望通過本文大家能夠?qū)崿F(xiàn)這樣的方法,需要的朋友可以參考下
    2017-10-10
  • ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時需注意

    ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時需注意

    ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時需注意...
    2006-09-09
  • .Net?MinimalApis響應(yīng)返回值的詳細過程

    .Net?MinimalApis響應(yīng)返回值的詳細過程

    本文主要講?MinimalApis?中的使用自定義IResultModel和系統(tǒng)自帶IResult做響應(yīng)返回值,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • .Net使用分表分庫框架ShardingCore實現(xiàn)多字段分片

    .Net使用分表分庫框架ShardingCore實現(xiàn)多字段分片

    本文詳細講解了.Net使用分表分庫框架ShardingCore實現(xiàn)多字段分片的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • .Net使用Xunit工具進行單元測試

    .Net使用Xunit工具進行單元測試

    這篇文章介紹了.Net使用Xunit工具進行單元測試的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 詳解IIS在ASP.NET?Core下的兩種部署模式

    詳解IIS在ASP.NET?Core下的兩種部署模式

    ASP.NET?CORE應(yīng)用針對IIS具有兩種部署模式,它們都依賴于一個IIS針對ASP.NET?CORE?Core的擴展模塊,本文給大家介紹下IIS在ASP.NET?Core下的兩種部署模式,感興趣的朋友一起看看吧
    2022-03-03
  • .NET讀取Excel文件的三種方法的區(qū)別

    .NET讀取Excel文件的三種方法的區(qū)別

    最近研究了如何使得ASP.NET讀取Excel文件更加高效呢,現(xiàn)總結(jié)如下:
    2013-03-03

最新評論

石城县| 德州市| 绵竹市| 竹北市| 内黄县| 夏津县| 大悟县| 晋宁县| 凉城县| 监利县| 新乐市| 明水县| 乐至县| 西昌市| 五家渠市| 泽州县| 民丰县| 江门市| 乌兰察布市| 庄浪县| 桑日县| 余江县| 景东| 罗山县| 高尔夫| 花垣县| 永济市| 宜君县| 滨海县| 田林县| 嘉义县| 陵川县| 南靖县| 左贡县| 彭水| 义马市| 望谟县| 南汇区| 衡南县| 西林县| 望江县|