凡是遇到org.apache.cxf.interceptor.Fault: Unmarshalling Error: 意外的元素......就代表是入參除了問題,后面會有詳細的報錯解釋:
首先貼出請求報文,每一種出錯對應的代碼回在后面貼出:
第一種:(uri:"......", local:"Version")。所需<{......}Send_Address> ,代碼:
原因是因為接受參數缺少一個參數,所以調用報錯
第二種:(uri:"......", local:"Version")。所需元素為<{}Send_Address>,<{}Version>
原因是因為接受參數沒有設置名稱空間,所以報錯信息前面會有{},意思是需要添加名稱空間,如果對象接受報錯也是因為接受的對象屬性沒有指定名稱空間
第三種:(uri:"......", local:"Version")。所需元素為<{http://www.monternet.com/dsmp/schemas/}arg0>,<{....../}Send_Address>
原因是入參我們沒有指定參數名,默認就是arg012345以此類推,所以凡是遇到arg012345類似的就是沒有設置名稱,對應的xml文檔也能看出來入參是arg0
第四種:(uri:"......", local:"Version")。所需元素為<{......}Send_Address>,<{......}version
原因是客戶端與服務端請求參數不一致
第五種:(uri:"......", local:"Version")。所需元素為<{......}Send_Address>,<{......}version>
原因是接受參數為上下級文檔類型,直接使用字符串接受會報錯,修改成文檔對象接受,如果直接接受文檔子節點則會提示綁定異常
第六種:(uri:"......", local:"Version")。所需元素為<{......}Send_Address>,<{......}version>
如果上面所有的代碼都沒有問題書寫正確,就要檢查是不是服務的實現類沒有寫名稱空間,如果沒有會提示參數不對,如果寫了名稱空間,寫的不一致也會提示參數不對