- 使用BasicHttpBinding
注意,这里,我的VS2022的提示步骤和网上查到的操作步骤略有不同,下面的步骤是我的VS2022的操作步骤:

首先,在 VS2022 中打开 .NET 6 项目或者新建一个 .NET 6 项目。
在“解决方案资源管理器”中,右键单击项目名称,然后选择“添加”->“服务引用”。
在“添加服务引用”窗口中,有三个选项,
这里选择 WCF Web Service,进入窗口“添加新的WCF Web Service服务引用”

点击“浏览”按钮,然后从文件系统中选择你的 WSDL 文件。
选中 WSDL 文件后,服务引用的配置将在窗口下方显示出来。这里可以在下面的输入框,修改命名空间为你想要的名称,点击下一步,在新窗口中,可以指定数据类型选项,默认不需要改,点击“完成”。
此时,VS2022 会根据你的 WSDL 文件生成 Web 服务的代码,即:原Webservice服务的代理类。
还有一个生成Webservice服务代理类的方法:

public static async Task TestCallWs()
{
mydemo.TestMyClient serv = null;
try
{
var binding = new BasicHttpBinding();
var endpoint = new EndpointAddress(UrlString); // url地址
serv = new mydemo.TestMyClient(binding, endpoint);
var result = await serv.invokeAsync(ParamsString); // xml格式的字符串参数
Console.WriteLine("返回接口数据:\n " + result);
}
catch(HttpRequestException e)
{
Console.WriteLine(e.Message);
}
finally
{
if (serv != null)
{
serv.Close();
}
}
}
使用HttpClient
- 定义:WsClient
public class WsClient
{
// 接口地址
private string mUrl = string.Empty;
// 请求参数
private string mParam = string.Empty;
namespace命名空间
//private string ns = "http://XXX:xx/xx/xx"; // TODO填写上你需要的命名空间名称
请求方法名
//private string funName = string.Empty;
public WsClient()
{
throw new NotImplementedException();
}
public WsClient(string url)
{
this.mUrl = url;
}
public async Task Request(string param)
{
if (string.IsNullOrEmpty(mUrl))
{
return "接口地址为空!";
}
if (!mUrl.Contains("http"))
{
return "非法接口地址!";
}
if (string.IsNullOrEmpty(param))
{
return "请求参数为空!";
}
this.mParam = param;
try
{
HttpClient httpClient = new();
// soap参数
string payload =
@"
" + mParam +
@"
";
// 发送 SOAP 请求并获取响应
HttpResponseMessage response = await httpClient.PostAsync(mUrl, new StringContent(payload, Encoding.UTF8, "text/xml"));
// 解析 SOAP 响应
string respStr = await response.Content.ReadAsStringAsync();
return respStr;
}
catch (HttpRequestException e)
{
Console.WriteLine("WsClient -> Request()异常 : {0} ", e.Message);
}
return "";
}
}
调用方式:
string result = await new WsClient(wsUrl).Request(xmlData);
wsUrl: 是你的Webservice接口地址;
xmlData: 是你拼装好协议里约定的xml格式的数据参数,示例如下:
result: 是请求接口,返回的数据,也是xml格式。
QueryUsers 21202012211211