如何在目标c中向共享点列表添加新行?

时间:2011-04-29 04:56:49

标签: objective-c web-services sharepoint nsurlconnection

我尝试使用sharepoint的updatelistitems web服务。但无法找到如何以xml格式提供输入数据以及soap请求。

提前致谢

1 个答案:

答案 0 :(得分:1)

由于这是您正在进行的集成,因此我建议您使用适用于SharePoint的ADO.NET适配器并通过WCF服务(soap / wsdl)进行连接。它将为您节省大量时间,如果正确完成,您的集成将不会是专有的。

在此http://www.bendsoft.com/downloads/camelot-wcf-service/检查此现成的wcf服务http://blog.bendsoft.com/category/integrations/wcf-services/,安装说明。

它是开源的,但是支持Camelot XML格式,如果您查询数据,它会将模式与内容捆绑在一起,请在此处查看示例模式http://www.bendsoft.com/downloads/sharepoint-web-parts/xml-pusher/

要使用WCF服务将数据插入SharePoint,您只需执行类似这样的操作

$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中创建一个类并通过SOAP将命令作为SQL发送并在WCF服务中执行SQL命令同样容易。

希望这有帮助!

-----------编辑此行以下-----------

从Objective-C查询建议的WCF服务会产生类似这样的内容

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方法,它会向Objective-C应用程序中的soapReq方法返回true或false。