繁体   English   中英

Mono for Android或Java和WCF

[英]Mono for Android or Java and WCF

我目前正在使用Mono for Android来开发移动应用程序。 我一直试图通过添加Web引用来使用WCF Web服务,但我似乎无法以这种方式进行调用。 我现在正在考虑咬紧牙关并使用Java重写代码,我不像C#那样擅长。

我有两个问题:

  1. 如何使用Mono for android使用WCF Web服务。
  2. 如果我要使用java,我将如何调用如下所示的方法:

     [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/MyMethod", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] void MyMethod(CustomObjectFromDataContract c_Object); 

当我进行调用时,我得到一个MessageBox,其中显示未处理的异常System.Net.WebException:。 当我进入代码时,我发现当你打电话时会发生错误

  [System.Web.Services.Protocols.SoapDocumentMethodAttribute    ("http://tempuri.org/IMyService/MyMethod", RequestNamespace="http://tempuri.org/",    ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    public void MyMethod([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]   CustomObjectFromDataContract c_Object) {
    this.Invoke("MyMethod", new object[] {
                    c_Object});
    }

调用是抛出异常的那个。

我已经解决了这个问题。 以下是使其工作的步骤:1。服务必须是RESTful服务2.而不是引用Localhost(我在生成的代码中)使用主机的IP地址。 我认为这是因为Android在Dalvik VM中运行,我怀疑它与我的Dev计算机使用的本地主机不同。 我做到了,我的服务现在有效。

如果添加Web引用,则应生成一些包含客户端的引用类。 然后,您可以创建生成的客户端的实例,并在客户端上调用MyMethod

因此,假设您使用的是Visual Studio,只需右键单击MonoDroid项目>添加Web引用,然后输入WCF服务的URL。

要调用它,您可以执行以下操作:我已添加对具有名称空间Example.WebReference的服务的引用

然后我会用以下方式调用它:

Example.WebReference.ServiceElement client = new Example.WebReference.ServiceElement();
var output = client.MyMethod(parameter);

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM