java – 使用JAX-WS将文件保存到Sharepoint服务器
我试图使用JAX-WS将文件保存到Sharepoint服务器. Web服务调用报告成功,但该文件不显示.
我使用这个命令(从WinXP)生成Java代码来进行JAX-WS调用: wsimport -keep -extension -Xnocompile http://hostname/sites/teamname/_vti_bin/Copy.asmx?WSDL 我得到一个我使用以下命名端口的Web服务的句柄: 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!"); } 我使用以下命令调用Web服务: port.copyIntoItems(sourceUrl,destUrlCollection,fields,"Contents of the file".getBytes(),copyIntoItemsResult,copyResultCollection) destUrlCollection中的sourceUrl和唯一的url等于“hostname / sites / teamname / Tech Docs / Sub Folder”. 名为fields的FieldInformationCollection对象只包含一个FieldInformation. 对copyIntoItems的调用成功返回; copyIntoItemsResult包含一个值0和唯一的CopyResult对象 当我在Sharepoint上查看“技术文档”库时,在“子文件夹”中没有文件. 为什么不告诉我我做错了什么?我只想错过一步吗? 更新(2011年2月26日) 我已经将我的FieldInformation对象的displayName和internalName属性更改为“标题”.仍然没有快乐,而是向正确的方向迈出一步. 在玩了一下url后,我得到了这些结果: 同时使用sourceUrl和唯一的目标URL等效,没有协议,我得到SUCCESS响应,但文档库中没有出现实际的文档. 当两个URL等同,但指定了一个“http://”协议时,我得到一个UNKNOWN错误,“对象引用未设置为对象的实例”.作为消息. 源URL是一个空字符串或null,“值不在预期范围内”.作为错误消息. 更新(2011年3月2日) 据Alexei Levenkov的建议,我用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 它看起来像一个简单的握手,直到它获得HTTP 200为WSDL和Web服务调用. 所以我试着没有把我的用户名和密码放在RequestContext中,我得到一个类似的东西,就像上面的WSDL请求(两个HTTP 401和一个HTTP 200)一样,但WebService调用只有一个HTTP 200.如果不再使用我的用户名/密码,那么在理论上应该认证失败. 解决方法
目标网址应包含文件的完整路径.我在方法描述页面 –
http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems.aspx查看样本.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |