ASP.NET Core如何使用HttpClient调用WebService
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本文小编为大家详细介绍"ASP.NET Core如何使用HttpClient调用WebService",内容详细,步骤清晰,细节处理妥当,希望这篇"ASP.NET Core如何使用HttpClient
千家信息网最后更新 2025年02月08日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 TaskGet() { 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 TaskGet() { 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安全错误
数据库的锁怎样保障安全
数据库刷库啥意思
湘西网络安全培训班
召开网络安全管理的通知
pilot使用的数据库
平时用的数据库有哪些
ios软件开发需要多久
2021网络安全文章
期贷科技互联网科技有限公司
网络安全应用技术专业
手游mc有没有服务器
网络安全建设趋势
深圳零壹互联网科技有限公司产品
东方通信网络安全事业部
外网网页数据库和服务器
数据库如何导出dmp
在制造企业干软件开发
网址管理服务器
服务器虚拟资源管理软件
局域网apache服务器
东西湖网络安全基地什么时候开学
h1z1大逃杀 服务器
pilot使用的数据库
黑色沙漠 数据库
数据库触发器删除一条记录
网络安全面对炮火劳模事迹
数据库按钮不弹出
运用网络技术推进党建工作
中国生物网络安全运营服务
榆树通用网络技术参考价格
棋牌软件开发公司排名