MonoTouch, веб-сервисы Sharepoint и xs: любой - PullRequest
3 голосов
/ 11 января 2012

Получал ли кто-либо вызов веб-службы для работы с SharePoint для работы с MonoTouch / MonoDevelop / Mono ??

Я могу получить WSDL из типичной конечной точки (в данном случае /_vti_bin/Lists.asmx), и MonoDevelop создает файл Reference.cs, как и ожидалось.

Я изменил ссылку.cs для включения параметра "name", поэтому все элементы XmyAnyElements теперь выглядят следующим образом: [System.Xml.Serialization.XmlAnyElement ("Any", "")] // name и namespace

Хотя это можно скомпилировать,время выполнения жалуется на XmlNode.Честно говоря, я сделал это в XmlNode [], чтобы он мог быть массивом, который invoke [], кажется, хочет.

Затем я строю GetListItemsQuery и передаю его моему вызову GetListItems через: var result = svc.GetListItems («Задачи», null, q, null, «100», null, null);

Хотя я могу подключиться и получить ответ от веб-службы, все ответы возвращаются с нулем в Anyполе.

1 Ответ

4 голосов
/ 12 января 2012

То, что я обнаружил, работает довольно разочаровывающе, но успешно.

Поднимите Visual Studio на компьютере с Windows, запустите старое школьное приложение Windows. Форма 2.0 и подключитесь к тот же WSDL .Это создаст новый файл Reference.cs. Добавьте этот файл в приложение MonoTouch.

Измените конструктор, чтобы использовать OLD MonoTouch constr, так как .Net 2.0 не будет компилироваться.

ImportedКонструктор

/// <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!

...