Apache Unerwartete Element exception beim generieren eines webservice-client
Ich versuche zum generieren eines webservice-client mit wsdl2java von axis2 (version 1.6.1).
./wsdl2java.sh -uri http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_snp.wsdl
Wenn ich diesen service bekomme ich auch eine 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());
}
Mit soaptest aber ich kann sehen, dass die Rs-Tag in das Ergebnis.
<Rs rsId="193925233" snpClass="snp" snpType="notwithdrawn" molType="genomic" bitField="050000000005000000000100" taxId="3702">
Wie kann ich dieses Problem beheben Ausnahme? Die WSDL ist nicht unter meiner Kontrolle.
- Es gibt kein "aber" -- Achse beschwert sich über das element dort nicht fehlen.
- Ja aber was kann ich tun, dass die Achse nimmt diese Rs-tag?
- Kann das niemand beantworten, bevor wir die vollständige Antwort, zumindest bis zu dem Punkt, wo das element
Rs
Auftritt, sowie die relevanten Teile der WSDL (das element-Typ-Deklarationen). Vielleicht ist die Antwort wirklich gegen die WSDL-Vertrag, das ist durchaus möglich. Vielleicht ist es mit einer neueren WSDL als die, die Sie haben. - Danke. Also dieser Fehler tritt auf, weil ein Falsches wsdl-input. Ich werde Sie bitten die Anbieter der wsdl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unerwartete Unterelement Fehler treten meist in Axis2 in ADB databinding-Typ. Wenn die Sequenz der tags kommen in SOAP-Antwort ist nicht dieselbe wie die Attribute in java-Klasse gebildet aus wsdl.
Beispielsweise
Es gelöst werden kann durch ein ändern der Reihenfolge der tags in der wsdl.
Hinweis : Wenn dies nicht der Fall, überprüfen Sie hier für weitere Gründe
Ich hatte gerade das gleiche problem mit NCBI eutils und löste es, indem Sie die wsdl-Datei und dann die Neugenerierung der client-Klassen lokal. Ich verwendet soaptest, wie Sie Tat, um zu sehen, genau das, was erwartet wurde, und dann machte Sie übereinstimmen. In meinem Fall waren Sie fehlt das element mit dem Namen "DbBuild" in Ihrer DbInfoType Objekt.