在ASP.NET Core项目中调用WebService的方法,可以使用HttpClient或者Service Reference两种方式。以下是详细的攻略:
使用HttpClient调用WebService
使用HttpClient调用WebService需要手动构造SOAP请求,并将请求发送到WebService的URL。以下是具体步骤:
- 创建HttpClient对象。
csharp
var client = new HttpClient();
- 构造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>");
- 创建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");
- 发送请求,并获取响应。
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。以下是具体步骤:
- 在项目中添加Service Reference。
在Visual Studio中,右键单击项目,选择“添加”->“服务引用”,在弹出的对话框中输入WebService的URL,然后单击“确定”按钮。
- 创建代理类对象。
csharp
var client = new GlobalWeatherSoapClient(GlobalWeatherSoapClient.EndpointConfiguration.GlobalWeatherSoap);
- 调用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技术站