加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用JAX-WS将文件保存到Sharepoint服务器

发布时间:2020-12-14 05:09:53 所属栏目:Java 来源:网络整理
导读:我试图使用JAX-WS将文件保存到Sharepoint服务器. Web服务调用报告成功,但该文件不显示. 我使用这个命令(从WinXP)生成Java代码来进行JAX-WS调用: wsimport -keep -extension -Xnocompile http://hostname/sites/teamname/_vti_bin/Copy.asmx?WSDL 我得到一个
我试图使用JAX-WS将文件保存到Sharepoint服务器. Web服务调用报告成功,但该文件不显示.

我使用这个命令(从WinXP)生成Java代码来进行JAX-WS调用:

wsimport -keep -extension -Xnocompile http://hostname/sites/teamname/_vti_bin/Copy.asmx?WSDL

我得到一个我使用以下命名端口的Web服务的句柄:
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!");
}

我使用以下命令调用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.
FieldInformation对象的“HelloWorld.txt”作为displayName,internalName和value的值.
type属性设置为FieldType.FILE. id属性设置为(java.util.UUID.randomUUID()).toString().

对copyIntoItems的调用成功返回; copyIntoItemsResult包含一个值0和唯一的CopyResult对象
在copyResultCollection中设置的错误代码为“SUCCESS”,并显示一条空错误消息.

当我在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查看样本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读