ASP.NET Core项目中调用WebService的方法

在ASP.NET Core项目中调用WebService的方法,可以使用HttpClient或者Service Reference两种方式。以下是详细的攻略:

使用HttpClient调用WebService

使用HttpClient调用WebService需要手动构造SOAP请求,并将请求发送到WebService的URL。以下是具体步骤:

  1. 创建HttpClient对象。

csharp
var client = new HttpClient();

  1. 构造SOAP请求。

csharp
var soapRequest = new StringBuilder();
soapRequest.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
soapRequest.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ");
soapRequest.Append("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ");
soapRequest.Append("xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
soapRequest.Append("<soap:Body>");
soapRequest.Append("<GetWeather xmlns=\"http://www.webserviceX.NET\">");
soapRequest.Append("<CityName>Beijing</CityName>");
soapRequest.Append("<CountryName>China</CountryName>");
soapRequest.Append("</GetWeather>");
soapRequest.Append("</soap:Body>");
soapRequest.Append("</soap:Envelope>");

  1. 创建HttpRequestMessage对象,并设置请求头和请求体。

csharp
var request = new HttpRequestMessage();
request.Method = HttpMethod.Post;
request.RequestUri = new Uri("http://www.webservicex.net/globalweather.asmx");
request.Headers.Add("SOAPAction", "\"http://www.webserviceX.NET/GetWeather\"");
request.Content = new StringContent(soapRequest.ToString(), Encoding.UTF8, "text/xml");

  1. 发送请求,并获取响应。

csharp
var response = await client.SendAsync(request);
var responseContent = await response.Content.ReadAsStringAsync();

以下是一个完整的示例代码:

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace WebServiceDemo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var client = new HttpClient();

            var soapRequest = new StringBuilder();
            soapRequest.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            soapRequest.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ");
            soapRequest.Append("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ");
            soapRequest.Append("xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
            soapRequest.Append("<soap:Body>");
            soapRequest.Append("<GetWeather xmlns=\"http://www.webserviceX.NET\">");
            soapRequest.Append("<CityName>Beijing</CityName>");
            soapRequest.Append("<CountryName>China</CountryName>");
            soapRequest.Append("</GetWeather>");
            soapRequest.Append("</soap:Body>");
            soapRequest.Append("</soap:Envelope>");

            var request = new HttpRequestMessage();
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri("http://www.webservicex.net/globalweather.asmx");
            request.Headers.Add("SOAPAction", "\"http://www.webserviceX.NET/GetWeather\"");
            request.Content = new StringContent(soapRequest.ToString(), Encoding.UTF8, "text/xml");

            var response = await client.SendAsync(request);
            var responseContent = await response.Content.ReadAsStringAsync();

            Console.WriteLine(responseContent);
        }
    }
}

在上面的示例代码中,我们使用HttpClient调用了一个名为GetWeather的WebService,并传递了两个参数:CityName和CountryName。我们手动构造了SOAP请求,并将请求发送到WebService的URL。最后,我们获取了响应,并将响应内容输出到控制台。

使用Service Reference调用WebService

使用Service Reference调用WebService需要先在项目中添加Service Reference,然后使用自动生成的代理类调用WebService。以下是具体步骤:

  1. 在项目中添加Service Reference。

在Visual Studio中,右键单击项目,选择“添加”->“服务引用”,在弹出的对话框中输入WebService的URL,然后单击“确定”按钮。

  1. 创建代理类对象。

csharp
var client = new GlobalWeatherSoapClient(GlobalWeatherSoapClient.EndpointConfiguration.GlobalWeatherSoap);

  1. 调用WebService方法。

csharp
var response = await client.GetWeatherAsync("Beijing", "China");

以下是一个完整的示例代码:

using System;
using System.Threading.Tasks;
using WebServiceDemo.GlobalWeather;

namespace WebServiceDemo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var client = new GlobalWeatherSoapClient(GlobalWeatherSoapClient.EndpointConfiguration.GlobalWeatherSoap);

            var response = await client.GetWeatherAsync("Beijing", "China");

            Console.WriteLine(response.Body.GetWeatherResult);
        }
    }
}

在上面的示例代码中,我们使用Service Reference调用了一个名为GetWeather的WebService,并传递了两个参数:CityName和CountryName。我们使用自动生成的代理类调用WebService方法,并获取了响应。最后,我们将响应内容输出到控制台。

综上所述,我们可以使用HttpClient或者Service Reference两种方式在ASP.NET Core项目中调用WebService。使用HttpClient需要手动构造SOAP请求,并将请求发送到WebService的URL;使用Service Reference需要先在项目中添加Service Reference,然后使用自动生成的代理类调用WebService。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core项目中调用WebService的方法 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Asp.Net中文本换行

    让我来给您讲解”Asp.Net中文本换行”的完整攻略吧。 1.使用Html的<br>标签 在Asp.Net中,我们可以使用Html的<br>标签来实现文本换行,这个标签可以在Razor视图中或在代码中使用。以下是使用<br>标签的示例: <p> 第一行文本<br> 第二行文本<br> 第…

    C# 2023年6月3日
    00
  • C#基础教程之类class与结构struct的区别

    下面是对于C#基础教程中class与struct的区别的详细讲解: 什么是class与struct class和struct都是C#中用于封装数据和行为的能力。他们两个非常相似,并且可以实现相同的功能。 class是引用类型,struct是值类型。使用class类型创建的对象,会在堆中分配内存。当你使用new操作符实例化一个类对象时,实际上是在堆上为类分配了…

    C# 2023年5月31日
    00
  • C#使用protobuf-net进行序列化的详细操作

    下面是使用protobuf-net进行C#序列化的详细攻略: 什么是protobuf-net protobuf-net是一种.NET平台下的高效且跨语言的序列化框架。与其他序列化框架(如XML序列化)相比,它具有更高的序列化和反序列化效率,能够有效地将对象序列化为二进制形式,以便它们可以被存储或传输。它是Google Protobuf的一个非官方的.NET实…

    C# 2023年5月31日
    00
  • 分享一个asp.net pager分页控件

    Asp.NetPager是一个.NET平台上的分页控件,可以方便地实现分页功能。以下是使用Asp.NetPager实现分页功能的完整攻略。 环境准备 在使用Asp.NetPager前,需要安装Asp.NetPager包。可以使用以下命令来安装Asp.NetPager: Install-Package AspNetPager 实现分页功能 以下是使用Asp.N…

    C# 2023年5月15日
    00
  • C#实现通过程序自动抓取远程Web网页信息的代码

    下面是对于“C#实现通过程序自动抓取远程Web网页信息的代码”的详细讲解攻略: 一、前置知识 在讲解抓取网页信息的代码之前,需要先了解以下几个概念: URL:Uniform Resource Locator,即统一资源定位符,它用于表示互联网资源的地址。比如 https://www.baidu.com 就是一个URL。 HTTP:HyperText Tran…

    C# 2023年6月7日
    00
  • 详解.NET 6如何实现获取当前登录用户信息

    .NET 6 是最新的 Microsoft .NET 基础设施的一个版本。在其最新版本中,Microsoft 进一步优化了对用户认证和授权的支持,通过一些常见且优秀的方式提供了对当前登录用户信息的简便访问。 以下是详解如何使用.NET 6实现获取当前登录用户信息的攻略,包括两个示例示意: 步骤一:启用身份验证 要使用.NET 6获取当前登录用户信息,首先需要…

    C# 2023年6月3日
    00
  • c# WPF中System.Windows.Interactivity的使用

    C# WPF框架中的System.Windows.Interactivity库为我们提供了一种方便的方式来对界面控件进行交互处理,比如双向绑定、事件触发等操作。本文将介绍System.Windows.Interactivity的基本概念以及如何在项目中使用该库。 什么是System.Windows.Interactivity System.Windows.I…

    C# 2023年5月15日
    00
  • C#使用随机数编写班级点名器的示例代码

    C#使用随机数编写班级点名器的示例代码非常适合初学者练习,下面我会详细讲解一下完整攻略。 第一步:创建一个C#控制台应用程序 首先需要创建一个C#控制台应用程序,并命名为 ClassRollCall。在程序的主类中添加以下代码: using System; namespace ClassRollCall { class Program { static vo…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部