繁体   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