我想使用 Xamarin 和 WCF 来使用公共 Web 服务。对于这个演示,我将使用Xamarin.iOS .
这是我试图使用的(公共)网络服务:
http://www.webservicex.net/globalweather.asmx?WSDL
在 Xamarin Studio 中,我添加了一个网页参考与来自网络服务的 URL。所选框架设置为Windows 通信基础 (WCF).
现在,我使用以下代码来连接该服务:
var _client = new GlobalWeatherSoapClient();
_client.BeginGetWeather ("Berlin", "Germany", (ar) => {
var result = _client.EndGetWeather(ar);
}, null);
执行这段代码时,我得到了System.NullReferenceException
。这就是问题所在,为什么它不能正常工作?
最奇怪的部分:当我不使用 WCF,而是选择.NET 2.0 Web 服务作为框架,一切似乎都工作正常。
我看不出我的 WCF 代码有什么问题 - 根据the docs http://docs.xamarin.com/guides/cross-platform/application_fundamentals/web_services,一切都应该正常。
我希望有人能帮助我!提前致谢!
你没有关注the docs http://docs.xamarin.com/guides/cross-platform/application_fundamentals/web_services.
引用该页面的内容:
要生成 WCF 服务的代理以在 Xamarin.iOS 项目中使用,
使用 Microsoft SilverlightServiceModel 代理生成工具
(SLSvcUtil) 随 Windows 上的 Silverlight SDK 一起提供。这个工具
允许指定可能需要的附加参数
保持与服务端点配置的合规性。
因此,第一件事是您需要使用 slsvcutil 在 Windows 计算机上创建代理。通过 Xamarin Studio 添加 WCF 引用到项目不起作用。它仅适用于 .NET 2.0 Web 服务,这就是该选项可以的原因。
第二件事,在使用 slsvcutil 在 Windows 上创建代理后,需要将其添加到项目中。
第三,您需要像这样使用基本的 http 绑定来初始化它(同样,来自上面链接的代码):
var binding = new BasicHttpBinding () {
Name= "basicHttpBinding",
MaxReceivedMessageSize = 67108864,
};
//...
client = new Service1Client (binding, new EndpointAddress ("http://192.168.1.100/Service1.svc"));
建议:忘记 iOS 上的 WCF。该文章包含有关客户端-服务器通信的其他方式的非常有用的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)