ASP.NET Core如何使用HttpClient调用WebService
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"ASP.NET Core如何使用HttpClient调用WebService",内容详细,步骤清晰,细节处理妥当,希望这篇"ASP.NET Core如何使用HttpClient
千家信息网最后更新 2025年11月07日ASP.NET Core如何使用HttpClient调用WebService
本文小编为大家详细介绍"ASP.NET Core如何使用HttpClient调用WebService",内容详细,步骤清晰,细节处理妥当,希望这篇"ASP.NET Core如何使用HttpClient调用WebService"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、创建WebService
我们使用VS创建一个WebService,增加一个PostTest方法,方法代码如下
using System.Web.Services;namespace WebServiceDemo{ /// /// WebTest 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [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 $"返回参数{para}"; } }}创建完成以后,我们发布WebService,并部署到IIS上面。保证可以在IIS正常浏览。
二、使用HttpClient调用WebService
我们使用VS创建一个ASP.NET Core WebAPI项目,由于是使用HttpClient,首先在ConfigureServices方法中进行注入
public void ConfigureServices(IServiceCollection services){ // 注入HttpClient services.AddHttpClient(); services.AddControllers();}然后添加一个名为WebServiceTest的控制器,在控制器里面添加一个Get方法,在Get方法里面取调用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; /// /// 通过构造函数实现注入 /// /// public WebServiceTestController(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } [HttpGet] public async Task Get() { string strResult = ""; try { // url地址格式:WebService地址+方法名称 // WebService地址:http://localhost:5010/WebTest.asmx // 方法名称: PostTest string url = "http://localhost:5010/WebTest.asmx/PostTest"; // 参数 Dictionary dicParam = new Dictionary(); dicParam.Add("para", "1"); // 将参数转化为HttpContent HttpContent content = new FormUrlEncodedContent(dicParam); strResult = await PostHelper(url, content); } catch (Exception ex) { strResult = ex.Message; } return strResult; } /// /// 封装使用HttpClient调用WebService /// /// URL地址 /// 参数 /// private async Task 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; } }} 然后启动调试,查看输出结果
调试的时候可以看到返回结果,在看看页面返回的结果
这样就完成了WebService的调用。生产环境中我们可以URL地址写在配置文件里面,然后程序里面去读取配置文件内容,这样就可以实现动态调用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; /// /// 通过构造函数实现注入 /// /// public WebServiceTestController(IHttpClientFactory httpClientFactory, IConfiguration configuration) { _httpClientFactory = httpClientFactory; _configuration = configuration; } [HttpGet] public async Task Get() { string strResult = ""; try { // url地址格式:WebService地址+方法名称 // WebService地址:http://localhost:5010/WebTest.asmx // 方法名称: PostTest // 读取配置文件里面设置的URL地址 //string url = "http://localhost:5010/WebTest.asmx/PostTest"; string url = _configuration["url"]; // 参数 Dictionary dicParam = new Dictionary(); dicParam.Add("para", "1"); // 将参数转化为HttpContent HttpContent content = new FormUrlEncodedContent(dicParam); strResult = await PostHelper(url, content); } catch (Exception ex) { strResult = ex.Message; } return strResult; } /// /// 封装使用HttpClient调用WebService /// /// URL地址 /// 参数 /// private async Task 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; } }} 这样就可以动态调用WebService了。
读到这里,这篇"ASP.NET Core如何使用HttpClient调用WebService"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
地址
方法
参数
名称
控制器
文件
控制
配置
内容
文章
结果
代码
函数
动态
格式
封装
妥当
思路
摘要
新知
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql改数据库名
如何搭设csgo服务器
市公安局网络安全
四川管理软件开发公司
上交招聘网络安全博士博士后
河南国产服务器哪个好
软件开发流程cmmi
L2通信协议栈软件开发
达梦数据库与sap
电子商务站有几台服务器
初中学习计算机软件开发
我的世界服务器资源区
成飞网络安全态势感知
科学技术研究所大数据库
工资录入数据库
高级数据库的含义
软件开发的职责
波兰的网络安全中心
网络安全地方立法
rose数据库表关系
中学第二季度安全数据库
数据库设计 专业
滴滴车主4g连接不上服务器
网络安全学院学工部
数据库码的英文
木春网络技术服务部电话
局域网服务器迁移到云服务器
中国电信都有哪些服务器
visual连接数据库
时尚网络技术加盟项目