Eva*_*ter 10 java sharepoint jax-ws
我正在尝试使用JAX-WS将文件保存到Sharepoint服务器.Web服务调用报告成功,但文件未显示.
我使用此命令(来自WinXP)生成Java代码以进行JAX-WS调用:
wsimport -keep -extension -Xnocompile http://hostname/sites/teamname/_vti_bin/Copy.asmx?WSDL
Run Code Online (Sandbox Code Playgroud)
我得到了一个Web服务的句柄,我port使用以下方法调用:CopySoap port = null;
if (userName != null && password != null) {
Copy service = new Copy();
port = service.getCopySoap();
((BindingProvider) port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, userName);
((BindingProvider) port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
} else {
throw new Exception("Holy Frijolé! Null userName and/or password!");
}
Run Code Online (Sandbox Code Playgroud)
我使用以下方法调用了Web服务:
port.copyIntoItems(sourceUrl, destUrlCollection, fields ,
"Contents of the file".getBytes(),
copyIntoItemsResult, copyResultCollection)
Run Code Online (Sandbox Code Playgroud)
在sourceUrl和中唯一的URL destUrlCollection等于"主机名/网站/ teamname /技术文档/子文件".
FieldInformationCollection名为的对象fields只包含一个FieldInformation.该FieldInformation对象具有"HelloWorld.txt"作为displayName,internalName和value的值.type属性设置为FieldType.FILE.id属性设置为(java.util.UUID.randomUUID()).toString().
copyIntoItems成功回归的呼吁; copyIntoItemsResult包含值0并且唯一CopyResult设置的对象copyResultCollection具有错误代码"SUCCESS",并带有空错误消息.
当我查看Sharepoint上的"Tech Docs"库时,在"子文件夹"中没有文件.
为什么不告诉我我做错了什么?我错过了一步吗?
更新(2011年2月26日)
我已按建议将FieldInformation对象的displayName和internalName属性更改为"Title".仍然没有快乐,但朝着正确的方向迈出了一步.
在玩了一些网址后,我得到了以下结果:
如果sourceUrl和唯一的目标URL等效,没有协议,我会获得SUCCESS响应,但文档库中不会显示实际文档.
如果两个URL等效但指定了"http://"协议,则会出现"未将对象引用设置为对象实例"的UNKNOWN错误.作为消息.
如果源URL为空字符串null,则会出现UNKNOWN错误,其中"值不在预期范围内".作为错误消息.
更新(2011年3月2日)
正如阿列克谢·莱文科夫所建议的那样,我用Fiddler来看看发生了什么,发现了这个:
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
34 401 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx?WSDL 1,656 text/html javaw:5304
35 401 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx?WSDL 1,539 text/html javaw:5304
36 200 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx?WSDL 10,887 private text/xml; charset=utf-8 javaw:5304
37 401 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx 1,656 text/html javaw:5304
38 401 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx 1,539 text/html javaw:5304
39 200 HTTP hostname /sites/teamname/_vti_bin/Copy.asmx 611 private, max-age=0 text/xml; charset=utf-8 javaw:5304
Run Code Online (Sandbox Code Playgroud)
它看起来像一个简单的握手,直到它获得WSDL和Web服务调用的HTTP 200.
所以我尝试不在RequestContext中输入我的用户名和密码,我得到的结果与上面的WSDL请求类似(两个HTTP 401和一个HTTP 200),但WebService调用只有一个HTTP 200.如果不再使用我的用户名/密码,理论上它应该失败认证.
目标 URL 应包含文件的完整路径。我查看方法描述页面上的示例 - http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems.aspx。