core 调用webservices_.Net Core如何调用WebService

WebService采用HTTP协议传输数据,采用XML格式封装数据。在.Net Core中推荐使用代理类来调用WebService,方便、自动。

引用WS与代理类生成

VS项目 右键 添加 引用服务,输入WS地址,转跳至对应的服务,点击完成生成代理类。也可以使用命令引用。

dotnet svcutil WebServiceUrl

调用WS接口

///

/// 预检信息上传(WS)

///

public bool UploadHspinfo(string xml)

{

try

{

_Logger.LogInformation("Updload:WS Init");

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new EndpointAddress(_UploadConfig.WSUrl);

ServiceReference.DataWebServiceIClient client = new ServiceReference.DataWebServiceIClient(binding, address);

var res = client.saveB_HspinfoListAsync(xml);

return res.Result.Body.@return;

}

catch (Exception ex)

{

_Logger.LogInformation("Updload:WS Error");

_Logger.LogInformation(ex.ToString());

return false;

}

}

Xml转化

WS采用Xml格式传输数据,在调用第三方WS接口时,需要符合对应数据结构。实体对象转Xml需要对格式处理,比如去除头部声明。下面方法可以获得干净的Xml字符串,方便组装。

public static string ModelToXml(T model)

{

MemoryStream stream = new MemoryStream();

XmlSerializer serializer = new XmlSerializer(typeof(T));

XmlWriterSettings settings = new XmlWriterSettings

{

Indent = true,

IndentChars = " ",

NewLineChars = "\r\n",

Encoding = Encoding.UTF8,

OmitXmlDeclaration = true // 不生成声明头

};

using (XmlWriter xmlWriter = XmlWriter.Create(stream, settings))

{

// 强制指定命名空间,覆盖默认的命名空间

XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();

namespaces.Add(string.Empty, string.Empty);

serializer.Serialize(xmlWriter, model, namespaces);

xmlWriter.Close();

};

stream.Position = 0;

StreamReader sr = new StreamReader(stream);

string str = sr.ReadToEnd();

return str;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值