无法使用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。 该文章包含有关其他客户端 – 服务器通信方式的非常有用的信息。