[英]Mono for Android or Java and WCF
我目前正在使用Mono for Android來開發移動應用程序。 我一直試圖通過添加Web引用來使用WCF Web服務,但我似乎無法以這種方式進行調用。 我現在正在考慮咬緊牙關並使用Java重寫代碼,我不像C#那樣擅長。
我有兩個問題:
如果我要使用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.