#objective-c #web-services #sharepoint #nsurlconnection
#objective-c #веб-службы #sharepoint #nsurlconnection
Вопрос:
Я попытался использовать веб-службу updatelistitems sharepoint. но не смог найти, как предоставить входные данные в формате xml вместе с запросом soap.
Заранее спасибо
Ответ №1:
Поскольку вы выполняете интеграцию, я бы рекомендовал использовать 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);
Параметры — это аргументы, перечисленные выше, они должны быть отправлены в виде ассоциативного массива (я полагаю, 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.
Комментарии:
1. Дело в том, что я хочу, чтобы это было полностью в objective-c. формат запроса soap для загрузки данных в список sharepoint. Как вставить этот sql-запрос в запрос soap в objective c??
2. Немного обновил мой ответ пояснением, как использовать службу WCF с Objective-C. Вы можете общаться с веб-службами SharePoint напрямую, не используя прокси, такой как служба Camelot WCF, но в конечном итоге вам придется писать собственные интеграции, которые потребляют огромное количество времени, не говоря уже о поддержке кода, если что-то изменится в установке SharePoint. С помощью предложенного выше решения вам просто нужно изменить SQL-запрос, если что-то изменится. В любом случае, проверьте этот URL для получения дополнительной информации об Objective-C и Soap bit.ly/lZOjzG