gpt4 book ai didi

ios - 无法使用 Xamarin 和 WCF 访问 Web 服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:29 25 4
gpt4 key购买 nike

我想使用 Xamarin 和 WCF 使用公共(public) Web 服务。对于此演示,我将使用 Xamarin.iOS

这是我尝试使用的(公共(public))网络服务:

http://www.webservicex.net/globalweather.asmx?WSDL

在 Xamarin Studio 中,我使用来自网络服务的 URL 添加了一个网络引用。所选框架设置为 Windows Communication Foundation (WCF)

现在,我正在使用以下代码连接服务:

var _client = new GlobalWeatherSoapClient();
_client.BeginGetWeather ("Berlin", "Germany", (ar) => {
var result = _client.EndGetWeather(ar);
}, null);

执行此代码时,我得到了一个 System.NullReferenceException。这就是问题所在,为什么它不能正常工作?

最奇怪的部分:当我不使用 WCF,而是选择 .NET 2.0 Web Services 作为框架时,一切似乎都运行良好。

根据 the docs,我看不出我的 WCF 代码有什么问题,一切都应该正常。

希望有人能帮帮我!提前致谢!

最佳答案

您没有关注 the docs .

引自该页面:

To generate a proxy to a WCF service for use in Xamarin.iOS projects, use the Microsoft SilverlightServiceModel Proxy Generation Tool (SLSvcUtil) that ships with the Silverlight SDK on Windows. This tool allows specifying additional arguments that may be required to maintain compliance with the service endpoint configuration.

因此,首先您需要使用 slsvcutil 在 Windows 机器上创建代理。通过 Xamarin Studio 将 WCF 引用添加到项目不起作用。它仅适用于 .NET 2.0 Web 服务,这就是该选项没问题的原因。

第二,在使用 slsvcutil 在 Windows 上创建代理后,您需要将其添加到项目中。

第三,您需要像这样使用基本的 http 绑定(bind)对其进行初始化(同样,来自上述链接的代码):

var binding = new BasicHttpBinding () {
Name= "basicHttpBinding",
MaxReceivedMessageSize = 67108864,
};
//...
client = new Service1Client (binding, new EndpointAddress ("http://192.168.1.100/Service1.svc"));

建议:忘记 iOS 上的 WCF。那篇文章包含有关客户端-服务器通信的其他方式的非常有用的信息。

关于ios - 无法使用 Xamarin 和 WCF 访问 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19089234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com