Ich mache eine Entwicklung, um eine SOAP
Anfrage an einen Remote-Web-Service senden und erhalten eine Antwort mit apache Camel
.Senden Sie eine SOAP-Anfrage an einen Remote-Web-Service und erhalten Sie eine Antwort mit Apache Camel
In diesem Fall habe ich erfolgreich Client Side wsdl2java Code mit der cxf-codegen-plugin
für die unten genannten WSDl generiert.
- Beispiel WSDL URL:
http://www.webservicex.net/stockquote.asmx?WSDL
und nach einigen Recherchen zu tun, habe ich unter Beispielcode eine SOAP-Anforderung an den Webdienst dort definiert zu senden und eine Antwort mit Apache Camel mit der erzeugte erhalten Client-Code.
CamelContext context = new DefaultCamelContext();
HttpComponent httpComponent = new HttpComponent();
context.addComponent("http", httpComponent);
ProducerTemplate template = context.createProducerTemplate();
GetQuote getQuote = new GetQuote();
getQuote.setSymbol("test123");
GetQuoteResponse getQuoteResponse = template.requestBody("http://www.webservicex.net/stockquote.asmx",getQuote, GetQuoteResponse.class);
System.out.println(getQuoteResponse);
Aber es gibt unter Fehler.
Caused by: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: [email protected] of type: net.webservicex.GetQuote on: Message[ID-namal-PC-33172-1469806939935-0-1]. Caused by: No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected] Exchange[ID-namal-PC-33172-1469806939935-0-2]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected]]
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected]
Was habe ich verpasst hier? Datenbindung oder irgendetwas anderes? Ich habe den client-code mit cxf generiert, also wie kann ich das mit cxf senden?
Was ich einfach möchte, ist eine SOAP-Anfrage an einen Remote-Web-Service zu senden und eine Antwort mit Apache Camel erhalten.
- Kamel Version: 2.9.0
- Java Version: 1.7.x/1.8.x
Vielen Dank bgossit! Es funktioniert gut dafür. Ich habe eine Frage. So senden Sie den Anfragetext, wenn mehrere Parameter benötigt werden. zB: Wie man Request-Parameter (messageHeader, securityHeader, sessionCreateRQ) für einen ähnlichen Aufruf sendet (SessionCreateRS sessionCreateRS = sessionCreatePortType.sessionCreateRQ;) Dies ist von JAX-WS) – namalfernandolk
Oh ich hatte eine dumme Antwort .. Ich habe sie einfach zu einer Liste hinzugefügt und gesendet. Es funktionierte! Bitte teilen Sie eine bessere Antwort. – namalfernandolk