尝试通过SOAP从Python到Sharepoint谈谈。
我尝试查询的其中一个列表包含“ID”作为主键字段。
(Field){
_RowOrdinal = "0"
_FromBaseType = "TRUE"
_DisplayName = "ID"
_Name = "ID"
_SourceID = "http://schemas.microsoft.com/sharepoint/v3"
_ColName = "tp_ID"
_StaticName = "ID"
_PrimaryKey = "TRUE"
_ReadOnly = "TRUE"
_Type = "Counter"
_ID = "{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}"
},
我们发送以下请求以查询ID = 77
的列表项<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:GetListItems>
<ns1:listName>60e3f442-6faa-4b49-814d-2ce2ec88b8d5</ns1:listName>
<query><Query><Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Counter">77</Value>
</Eq>
</Where></Query></query>
</ns1:GetListItems>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
然而,Sharepoint会从列表中返回完全忽略查询的所有项目。
有什么想法吗?
答案 0 :(得分:2)
实际证明有必要使用
<ns1:query>
这里(无论出于何种原因)。
答案 1 :(得分:0)
尝试Type =“Number”而不是Counter。我刚刚浏览了一堆代码,我写了一段时间后根据ID获取列表项,我使用了Number,它可以工作。
您可能还需要包含视图和内容的空元素。以下是我生成的请求的片段:
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>Workgroups</listName>
<viewName />
<query><Query>
<Where><Eq><FieldRef Name="ID"/><Value Type="Number">101</Value></Eq></Where>
</Query></query>
<viewFields><ViewFields><FieldRef Name="Title"/><FieldRef Name="Leader" /><FieldRef Name="Members" /><FieldRef Name="hiddenmembers" /></ViewFields></viewFields>
<rowLimit />
<queryOptions><QueryOptions /></queryOptions>
</GetListItems>