使用JAX-WS将文件保存到Sharepoint Server

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.如果不再使用我的用户名/密码,理论上它应该失败认证.

Ale*_*kov 4

目标 URL 应包含文件的完整路径。我查看方法描述页面上的示例 - http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems.aspx

  • 为我工作(C#...但只要你设法调用 WS,使用什么语言就无关紧要):源文件名,目标绝对 Url(带有文件部分),空字段集合。尝试收集 Fiddler(或其他 HTTP 观察程序)跟踪并查看是否有可疑内容。您还可以在使用 SharePoint 的复制到功能与您的进行比较时查看跟踪。 (2认同)