Hello,
I'm developing a route in Talend Studio (we have Talend 5.1.2). I'm having several problems
The most blocking is about extracting a data from our incoming XML with an XPath query (in a
cSetHeader component). I got the following exception cLog_2 INFO Exchange] :1:1: Premature end of file. DefaultErrorHandler ERROR Failed delivery for (MessageId: ID-HL-27-59661-1383840349964-0-2 on ExchangeId: ID-HL-27-59661-1383840349964-0-1). Exhausted after delivery attempt: 1 caught: org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.converter.stream.InputStreamCache to the required type: org.w3c.dom.Document with value org.apache.camel.converter.stream.InputStreamCache@7a0280ad due org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file. org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.converter.stream.InputStreamCache to the required type: org.w3c.dom.Document with value org.apache.camel.converter.stream.InputStreamCache@7a0280ad due org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file. at org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:117) at org.apache.camel.builder.xml.XPathBuilder.doGetDocument(XPathBuilder.java:961) at org.apache.camel.builder.xml.XPathBuilder.getDocument(XPathBuilder.java:940) at org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:785) at org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:692) at org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:662) at org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:147) In the attached screenshot I show this part of the route, as well as the configuration of the cSetHeader component Any idea?? Regards, Enrique
PS: Should I post here the other problems, or rather one problem per post?
Hi Enrique, Try adding a cConvertBody before the cSetHeader. Just use its default conversion target (String). This should prepare the body to be read by the XPath processor. Best Regards, -Ben
Hi Ben,
Thank you for your response. I found that the XPath was also failing because the ftp component modifies the body in. So I added a wiretap component with the settings attached in the 3rd screenshot.
The XPath seems to work, but I can't use it in my cHTTP. I want to use this header as a param for my GET request (see 4th screenshot in my first post), but I get this request:
GET /hlEndpoint/getStatus?orderNum=%24%7Bheader.newOrderId%7D HTTP/1.1
Any idea how to resolve this header variable?
Best regards,
Enrique