【问题标题】:Consuming SOAP Web Services in Xamarin Forms with just a WSDL File仅使用 WSDL 文件在 Xamarin 表单中使用 SOAP Web 服务
【发布时间】:2021-01-06 05:53:28
【问题描述】:

我是一个网络服务 n00b,我正在尝试弄清楚如何将 SOAP Web 服务使用到 Xamarin Forms 项目中。然而,问题是我只提供了 .wsdl 文件。任何人有任何想法或知道从哪里开始?

【问题讨论】:

  • 您还有其他选择吗? SOAP 是一项古老的技术,使用起来很糟糕。我会不惜一切代价避免它。但是,如果您坚持使用 SOAP Xamarin 在他们的文档中介绍了这一点:docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/…
  • @Jason 感谢您的回复。不幸的是,我没有其他选择。我工作的公司已经创建了 SOAP Web 服务,并且只给了我使用的 .wsdl 文件。在浏览文档/论坛数小时后,我尝试将 Web 引用添加到 Visual Studio 中 wsdl 文件的路径,但一直收到错误“下载‘{0}’时出错”。
  • 另外,我一直遇到有人说要使用 WCF,但我不能,因为我在 Mac OS 上。 @杰森

标签: xamarin xamarin.forms soap wsdl


【解决方案1】:

遗憾的是,我们过去不得不这样做。您想使用Svcutil 结帐,

这些是我们旧项目的注释,其中一些部分已被编辑,但应该足以让您继续前进:

  • 使用 svcutil 生成代理服务包装器,例如 svcutil PATH_TO_HOSTED_WSDL

请注意,不同版本的 svcutil 工具可能会在文件末尾为您提供异步方法,也可能不会。不过这些应该没关系。 你可能想在这里async,不过我们当时的开发人员并不太确定

  • 然后手动编辑文件以删除对IExtensibleDataObject 的任何引用,例如

    • 删除类定义结束部分 , System.Runtime.Serialization.IExtensibleDataObject

    • 删除字段 private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

    • 删除属性

public System.Runtime.Serialization.ExtensionDataObject ExtensionData
{
    get
    {
        return this.extensionDataField;
    }
    set
    {
        this.extensionDataField = value;
    }
}

在我们最后一次这样做的时候,Xamarin 确实不支持某些构造。情况可能不再如此,但这对我们有用。

更新

我还没有竭尽全力测试这个工具,但dotnet-svcutil 似乎是一个新的dotnet 工具,它应该可以生成所需的位以允许使用 WCF Web 服务。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多