我試圖使用JAX-WS將文件保存到Sharepoint服務器。 Web服務調用報告成功,但文件不顯示。保存文件到Sharepoint服務器使用JAX-WS
我用這個命令(從WinXP中)來生成Java代碼,以使JAX-WS電話:
wsimport -keep -extension -Xnocompile http://hostname/sites/teamname/_vti_bin/Copy.asmx?WSDL
我得到了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!");
}
我使用以下稱爲Web服務:
port.copyIntoItems(sourceUrl, destUrlCollection, fields ,
"Contents of the file".getBytes(),
copyIntoItemsResult, copyResultCollection)
的sourceUrl
和destUrlCollection
唯一的網址與 「主機名/網站/ teamname /技術文檔/子文件」。
FieldInformationCollection
對象名爲fields
僅包含一個FieldInformation
。 FieldInformation
對象具有「HelloWorld.txt」作爲displayName,internalName和value的值。 類型屬性設置爲FieldType.FILE
。 id屬性設置爲(java.util.UUID.randomUUID()).toString()
。
呼叫copyIntoItems
成功返回; copyIntoItemsResult
包含值0,且在copyResultCollection
中設置的唯一CopyResult
對象 的錯誤代碼爲「SUCCESS」,並且爲空錯誤消息。
當我查看Sharepoint上的「Tech Docs」庫時,在「Sub Folder」中沒有文件。
爲什麼不告訴我我做錯了什麼?我只是錯過了一步?
更新(2011年2月26日)
我已經改變了我FieldInformation對象的顯示名稱和INTERNALNAME性質是「標題」的建議。仍然沒有喜樂,但朝着正確的方向邁出了一步。
與網址有點玩弄後,我得到了這些結果:
同時與sourceUrl和唯一的目標網址等同,不帶任何協議,我得到了成功響應,但沒有實際的文件出現在文檔庫。
對於這兩個URL等同,但指定了「http://」協議,我得到一個UNKNOWN錯誤,其中「對象引用未設置爲對象實例」。作爲消息。
源URL爲空字符串或null
,我得到一個UNKNOWN錯誤,其中「值不在預期範圍內」。作爲錯誤信息。
更新(2011年3月2日)
正如阿列克謝Levenkov建議,我用小提琴手,看看發生了什麼事情,發現這個:
# 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
它看起來像一個簡單的握手會直到獲取WSDL和Web服務調用的HTTP 200。
所以我試着不把我的用戶名和密碼放在RequestContext中,我得到了類似的東西,就像我上面做的WSDL請求(兩個HTTP 401和一個HTTP 200)一樣,但是WebService調用只有一個HTTP 200。如果它不再使用我的用戶名/密碼,那麼理論上應該驗證失敗。
+1爲錯誤消息:) – 2011-02-25 15:49:54