Как добавить новую строку в список sharepoint в target c? - PullRequest
0 голосов
/ 29 апреля 2011

Я пытался использовать веб-сервис updatelistitems на sharepoint. но не смог найти способ дать входные данные в формате xml вместе с запросом мыла.

Заранее спасибо

1 Ответ

1 голос
/ 29 апреля 2011

Поскольку это интеграция, которую вы делаете, я бы рекомендовал использовать адаптер ADO.NET для SharePoint и подключиться через службу WCF (soap / wsdl). Это сэкономит вам много времени, и если все сделано правильно, ваша интеграция не будет проприетарной.

Проверьте этот готовый сервис wcf, http://www.bendsoft.com/downloads/camelot-wcf-service/, инструкции по установке здесь http://blog.bendsoft.com/category/integrations/wcf-services/.

Это открытый исходный код, но поставляется с поддержкой формата Camelot XML, который связывает схему с содержимым, если вы запрашиваете данные, проверьте схему примера здесь http://www.bendsoft.com/downloads/sharepoint-web-parts/xml-pusher/.

Чтобы вставить данные в SharePoint с помощью службы WCF, вы можете просто сделать что-то вроде этого

$SharePointNonQuery = new SharePointNonQuery(array(
    'sql' => "INSERT INTO contactform (title,email,company,message) VALUES ('John Doe','john.doe@example.com','Johns Company','A test message!')",
    'method' => 'ExecuteNonQuery',
    'connString' => 'sharepoint_connection',
    'sharedKey' => constant("WSDL_SHARED_KEY")
));

Пример явно сделан на PHP (http://blog.bendsoft.com/2011/04/camelot-php-tools-1-1-for-sharepoint-released/), но одинаково легко создать класс в Objective-C и отправить свою команду в виде SQL через SOAP и выполнить команду SQL в службе WCF.

Надеюсь, это поможет!

----------- Изменения под этой строкой -----------

Запрос предлагаемой службы WCF из Objective-C приведет к чему-то вроде этого

WSMethodInvocationRef soapReq = createSOAPRequest(url, method, namespace, params, paramOrder, reqHeaders);

URL-адрес - это местоположение службы wcf, т.е. http://yourserver.com/wcf/camelot.wcf

Метод - это метод В сервисе wcf, который вы хотите использовать. У службы Camelot WCF есть несколько методов по умолчанию. В этом случае подходящим будет метод ExecuteNonQuery, который принимает следующие аргументы; sql, connString и sharedKey.

bool ExecuteNonQuery(string sql, string connString, string sharedKey);

Params - это аргументы, перечисленные выше, они должны быть отправлены в виде ассоциативного массива (я полагаю, NSDictionary).

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
    @"INSERT INTO YourList (title,email,company,message) VALUES ('John Doe','john.doe@example.com','Johns Company','A test message!')", @"sql", 
    @"connString", @"SharePointConnectionString", 
    @"sharedKey", @"YourPreferredKey", 
    nil];

ExecuteNonQuery - это метод bool, который возвращает true или false методу soapReq в приложении Objective-C.

...