使用XFire調用WebService需注意的事項

 


(一):注意過濾輸入和輸出參數空白字符
如果出現空白字符解析不了導致調用失敗,導致下面的異常:
org.codehaus.xfire.fault.XFireFault: Error writing document.. Nested exception is com.ctc.wstx.exc.WstxIOException: Invalid null character in text to output
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)

String.trim()一下即可。
 
(二):連接時注意修改一些參數
  比如:HttpClientParams.CONNECTION_MANAGER_TIMEOUT // 設置Timeout
  這其實不止是這裏需要,任何網絡編程都需要注意此事項。當對方服務死了或網絡異常,
如果不做timeout處理,按照默認的時間去處理,將會導致服務積壓嚴重甚至被脫死。
  HttpClientParams.USE_EXPECT_CONTINUE //client handshake
  如果服務不需要傳輸大量的數據,保持長連接,還是建議關閉掉此功能,設置爲false。
否則,在業務量很大的情況下,很容易將服務端和自己都搞的很慢甚至拖死。
  HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//設置ws連接超時時間
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 1000);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章