xmlrpc使用中的一個問題

 xmlrpc是一種很簡單的遠程調用的方法,但有個問題就是調用中傳送的參數不能使非ascii碼的字符,否則客戶端會拋出異常。我在使用時爲了性能的考慮採用了異步方法調用,即client.executeAsync(),這時客戶端是程序的主線程是不會拋出異常的,而且我也沒有定義回調的函數,讓其爲null,所以當我發現沒有調用xmlrpc的服務器端時很疑惑(更爲要命的時我用兩個客戶端調用,一個好使一個不好使,,這就更讓我摸不着頭腦了,後來估計會不會是兩個程序的lib中的xmlrpc的實現jar包版本不同,雖然都是用的apache的開源項目,但估計這種可能性不大)。後來把異步調用改成了同步調用,異常才得以被主線程找到,就是使用非ascii碼的字符作爲傳輸的參數(也就是中文拉)。中文是不能不要的,但xmlrpc又不讓傳,解決的一個很簡單的方法就是用Base64類(很多jar包都帶)先把中文encode()成一些ascii碼字符,傳過去後再用Base64的decode()將其復原成中文即可!
     還有一個要注意的地方就是xmlrpc遠程定義的要被調用的方法最好不要是void的,最後返回一個別的類型的值,否則在同步調用方法中也會拋出錯誤!(異步的沒試)
 
發佈了34 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章