MonoTouch,Sharepoint Web服务和xs:any

时间:2012-01-11 17:33:10

标签: web-services sharepoint mono xamarin.ios monodevelop

是否有人通过网络服务调用使用SharePoint 来使用MonoTouch / MonoDevelop / Mono?

我能够从典型端点获取WSDL(在本例中为/_vti_bin/Lists.asmx),MonoDevelop按预期创建Reference.cs。

我修改了Reference.cs以包含“name”参数,因此所有XmyAnyElements现在看起来像: [System.Xml.Serialization.XmlAnyElement(“Any”,“”)] //名称和命名空间

虽然这可以编译,但运行时会抱怨XmlNode。很公平,我把它变成了XmlNode []所以它可能是一个数组,调用[]似乎想要。

然后构建一个GetListItemsQuery并将其传递给我的GetListItems调用: var result = svc.GetListItems(“Tasks”,null,q,null,“100”,null,null);

虽然我可以连接并获取Web服务进行响应,但所有响应都会在Any字段中返回null。

1 个答案:

答案 0 :(得分:4)

我发现作品非常令人沮丧,但却很成功。

在Windows计算机上启动Visual Studio,启动旧式.Net 2.0 Windows窗体应用程序,并连接到相同的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中的数据!