无法使用Xamarin和WCF访问webservice

我想要使​​用Xamarin和WCF的公共Web服务。 对于这个演示,我将使用Xamarin.iOS

这是我试图消费的(公共)web服务:

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

在Xamarin Studio中,我使用web服务的URL添加一个Web引用 。 所选框架被设置为Windows Communication Foundation(WCF)

现在,我正在使用下面的代码来连接服务:

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

当执行这个代码时,我得到一个System.NullReferenceException 。 这是问题,为什么它不正确?

最奇怪的部分:当我不使用WCF,但select.NET 2.0 Web服务作为框架,似乎一切工作正常。

我看不出我的WCF代码有什么问题 – 根据文档 ,一切都应该正常工作。

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

你没有按照文档 。

从该页面引用:

要生成Xamarin.iOS项目中使用的WCF服务的代理,请使用随Windows上的Silverlight SDK一起提供的Microsoft SilverlightServiceModel代理生成工具(SLSvcUtil)。 此工具允许指定可能需要的其他参数以保持与服务端点configuration的一致性。

所以,首先,你需要在slsvcutil的Windows机器上创build一个代理。 通过Xamarin Studio向项目添加WCF引用不起作用。 它只适用于.NET 2.0 Web服务,这就是为什么这个选项是好的。

第二件事,在用slsvcutil在Windows上创build代理之后,需要将其添加到项目中。

第三,你需要像这样初始化它,使用基本的http绑定(再次,从上面的链接代码):

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

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