我正在使用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);
提前感谢您的时间和帮助。
答案 0 :(得分:2)
我找到了答案。如下。
我们在Query类构造函数中传递一个字符串作为参数,而不是传递Element类对象。所以我创建了一个返回Element Object Code的方法,如下所示。
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/
由于
答案 1 :(得分:0)
尝试将值类型更改为<Value type='Counter'>
。