2012-01-11 85 views
3

是否有人通過網絡服務調用工作與SharePoint以使用MonoTouch/MonoDevelop/Mono?MonoTouch,Sharepoint網絡服務和xs:任何

我能夠從典型端點(在這種情況下爲/_vti_bin/Lists.asmx)獲取WSDL,並且MonoDevelop按預期創建Reference.cs。

我已經修改了Reference.cs包括「名稱」參數,因此所有XmyAnyElements現在的樣子: [System.Xml.Serialization.XmlAnyElement(「任何」,「」)] //名稱和命名空間

雖然這可以編譯,但運行時會抱怨XmlNode。很公平,我把它變成了XmlNode [],所以它可能是一個數組,它調用[]似乎想要。

然後我創建一個GetListItemsQuery,並通過它傳遞給我的GetListItems調用: var result = svc.GetListItems(「Tasks」,null,q,null,「100」,null,null);

雖然我可以連接並獲取Web服務進行響應,但所有響應都會在Any字段中返回空值。

回答

4

我發現的作品相當令人沮喪,但成功。

在Windows機器上拉起Visual Studio,啓動一箇舊式的.Net 2.0窗體表單應用程序,並連接到相同的WSDL。這將創建一個新的Reference.cs文件。 將該文件帶入您的MonoTouch應用程序。

修改構造函數以使用OLD MonoTouch構造函數,因爲.Net 2.0將不能編譯。

/// <remarks/> 
    public Lists() { 
     *this.Url = global::test.Properties.Settings.Default.test_gxgvwn1_Lists; //BREAKS HERE, BY THAT'S OK!* 
     if ((this.IsLocalFileSystemWebService(this.Url) == true)) { 
      this.UseDefaultCredentials = true; 
      this.useDefaultCredentialsSetExplicitly = false; 
     } 
     else { 
      this.useDefaultCredentialsSetExplicitly = true; 
     } 
    } 

MonoTouch的生成(我用這個)進口構造:

public Lists() { 
     this.Url = "http://www.mysite.com/_vti_bin/Lists.asmx"; 
    } 

    public Lists(string url) { 
     this.Url = url; 
    } 

一旦被改變,則應用程序將編譯和結果= SVC .GetListItems()將實際返回XmlNodes中的數據!