3

我正在使用 Sharepoint SOAP 服务来获取基于查询的数据。当我在 GetListItems 中将 Query 参数作为 null 传递时,我得到了一个文档列表,但是当我传递 Query 时,它给了我以下错误消息。

javax.xml.ws.soap.SOAPFaultException: Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
at com.sun.xml.internal.w's. fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:119)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.internal. w's.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
at $Proxy30.getListItems(Unknown Source)

代码和输入如下。

GetListItems.ViewFields viewFields = new ViewFields(); viewFields.getContent().add("<ViewFields><FieldRef Name='ID' /></ViewFields>");
GetListItems.Query query = new Query(); query.getContent().add("<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Text'>3</Value> </Eq></Where></Query>");

这就是我调用 Sharepoint 服务的方式

port.getListItems(listName, "", query, viewFields, rowLimit, null, null);

提前感谢您的时间和帮助。

4

2 回答 2

2

我找到了答案。如下。

我们在 Query 类构造函数中传递一个字符串作为参数,而不是我们需要传递 Element 类对象。因此,我创建了一种返回元素对象代码的方法,如下所示。

public static Element generateXmlNode(String sXML) throws   ParserConfigurationException,SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document documentOptions = builder.parse(new InputSource(new StringReader(sXML)));
Element elementOptions = documentOptions.getDocumentElement();
return elementOptions;
}

而不是"<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Text'>3</Value> </Eq></Where></Query>"

我正在路过generateXmlNode("<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Text'>3</Value> </Eq></Where></Query>")

这解决了我的问题。

引用自http://davidsit.wordpress.com/2010/02/10/reading-a-sharepoint-list-with-java-tutorial/

谢谢

于 2013-08-19T10:03:44.413 回答
0

尝试将值类型更改为<Value type='Counter'>.

于 2013-08-17T18:27:49.013 回答