I'm trying to generate a webservice client with wsdl2java from axis2 (version 1.6.1).
./wsdl2java.sh -uri http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_snp.wsdl
When I call this service, I get an Exception.
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());
}
With soaptest however I can see the Rs Tag in the result.
<Rs rsId="193925233" snpClass="snp" snpType="notwithdrawn" molType="genomic" bitField="050000000005000000000100" taxId="3702">
How can I fix this exception? The WSDL is not under my control.
Unexpected subelement error mostly occur in Axis2 in ADB databinding type. When the sequence of tags coming in SOAP response is not same as that of attributes in java class formed from wsdl.
For example,
If response or request XML must have a, b, c elements in a sequence and actual XML has a, d, c elements in the sequence, then Axis2 would complain saying that it received an Unexpected element named d.
It can be resolved by changing the sequence of tags in wsdl.
Note : If this is not the case, check here for other reasons
I just had the same problem with NCBI eutils and solved it by editing the wsdl file and then regenerating the client classes locally. I used soaptest as you did to see exactly what it was expecting and then made them match up. In my case, they were missing the element named "DbBuild" in their DbInfoType object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With