簡體   English   中英

生成Web服務客戶端時Apache發生意外的子元素異常

[英]Apache Unexpected subelement exception while generating a webservice client

我正在嘗試使用來自axis2(版本1.6.1)的wsdl2java生成一個Web服務客戶端。

./wsdl2java.sh -uri http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_snp.wsdl

當我打電話給這項服務時,我得到一個例外。

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://www.ncbi.nlm.nih.gov/soap/eutils/efetch_snp}Rs

    try {
        EFetchSnpServiceStub fetchService = new EFetchSnpServiceStub();
        EFetchSnpServiceStub.EFetchRequest reqIdSnp = new EFetchSnpServiceStub.EFetchRequest();
        reqIdSnp.setId("193925233");
        EFetchSnpServiceStub.EFetchResult resIdSnp = fetchService.run_eFetch(reqIdSnp);
    } catch (Exception e) {
        System.out.println(e.toString());
    }   

但是,使用soaptest,我可以在結果中看到Rs Tag。

<Rs rsId="193925233" snpClass="snp" snpType="notwithdrawn" molType="genomic" bitField="050000000005000000000100" taxId="3702">

我該如何解決這個異常? WSDL不在我的控制之下。

在ADB數據綁定類型的Axis2中,主要發生意外的子元素錯誤。 當SOAP響應中的標記序列與由wsdl形成的java類中的屬性序列不同時。

例如,

如果響應或請求XML必須在序列中包含a,b,c元素,而實際的XML在序列中有a,d,c元素,那么Axis2會抱怨說它收到了一個名為d的Unexpected元素。

可以通過更改wsdl中的標記序列來解決它。

注意: 如果不是這種情況,請在此處查看其他原因

我剛剛遇到了與NCBI eutils相同的問題,並通過編輯wsdl文件然后在本地重新生成客戶端類來解決它。 我像你一樣使用soaptest來確切地看到它的期望,然后讓它們匹配。 在我的例子中,他們在DbInfoType對象中缺少名為“DbBuild”的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM