.Net Core如何調用WebService


WebService采用HTTP協議傳輸數據,采用XML格式封裝數據。在.Net Core中推薦使用代理類來調用WebService,方便、自動。

引用WS與代理類生成

VS項目 右鍵 添加 引用服務,輸入WS地址,轉跳至對應的服務,點擊完成生成代理類。也可以使用命令引用。

  1. dotnet svcutil WebServiceUrl

調用WS接口

  1. /// <summary>
  2. /// 預檢信息上傳(WS)
  3. /// </summary>
  4. public bool UploadHspinfo(string xml)
  5. {
  6. try
  7. {
  8. _Logger.LogInformation("Updload:WS Init");
  9. BasicHttpBinding binding = new BasicHttpBinding();
  10. EndpointAddress address = new EndpointAddress(_UploadConfig.WSUrl);
  11. ServiceReference.DataWebServiceIClient client = new ServiceReference.DataWebServiceIClient(binding, address);
  12. var res = client.saveB_HspinfoListAsync(xml);
  13. return res.Result.Body.@return;
  14. }
  15. catch (Exception ex)
  16. {
  17. _Logger.LogInformation("Updload:WS Error");
  18. _Logger.LogInformation(ex.ToString());
  19. return false;
  20. }
  21. }

Xml轉化

WS采用Xml格式傳輸數據,在調用第三方WS接口時,需要符合對應數據結構。實體對象轉Xml需要對格式處理,比如去除頭部聲明。下面方法可以獲得干凈的Xml字符串,方便組裝。

  1. public static string ModelToXml<T>(T model)
  2. {
  3. MemoryStream stream = new MemoryStream();
  4. XmlSerializer serializer = new XmlSerializer(typeof(T));
  5. XmlWriterSettings settings = new XmlWriterSettings
  6. {
  7. Indent = true,
  8. IndentChars = " ",
  9. NewLineChars = "\r\n",
  10. Encoding = Encoding.UTF8,
  11. OmitXmlDeclaration = true // 不生成聲明頭
  12. };
  13. using (XmlWriter xmlWriter = XmlWriter.Create(stream, settings))
  14. {
  15. // 強制指定命名空間,覆蓋默認的命名空間
  16. XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
  17. namespaces.Add(string.Empty, string.Empty);
  18. serializer.Serialize(xmlWriter, model, namespaces);
  19. xmlWriter.Close();
  20. };
  21. stream.Position = 0;
  22. StreamReader sr = new StreamReader(stream);
  23. string str = sr.ReadToEnd();
  24. return str;
  25. }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM