我有两个网络服务。基本上一个接受输入字符串,并返回一个xml文档。第二个从第一个获取xml并返回一个xml文档。我对第二份文件感兴趣。
问题是我无论如何都无法修改这些web服务是如何工作的,输入参数必须在url中发送(它在请求体内不起作用)
所以基本上,我想用input = body调用一个web服务(这是工作)。然后我想调用第二个webservice,第一个返回input = body。
这是我的骆驼配置:
<route>
<from uri="direct:language-identifier" />
<toD uri="http://opener.olery.com/language-identifier?input=${body}&bridgeEndpoint=true"/>
</route>
<route>
<from uri="direct:tokenizer" />
<setHeader headerName="input"><simple>${in.body}</simple></setHeader>
<toD uri="http://opener.olery.com/tokenizer?bridgeEndpoint=true"/>
</route>
<route>
<from uri="servlet:opener-preparse"/>
<pipeline>
<to uri="direct:language-identifier"/>
<to uri="direct:tokenizer"/>
</pipeline>
</route>
我的问题是:
当我在第二个web服务中使用toD传递输入参数时,我得到一个无效字符(可能是因为数据包含新行)
当我使用上一个配置中的setHeader时,第二个服务的输入是从初始数据(而不是第一个Web服务返回的数据)设置的
我该如何解决?
答案 0 :(得分:1)
要使用来自webservice调用的返回值替换初始路径正文,请确保在调用Web服务之前清空路径正文:
for file in $FILES_TO_REVERT; do
git lfs untrack "$file";
git rm --cached "$file";
git add --force "$file";
done
git commit -m "..."
答案 1 :(得分:0)
这对我有很大帮助,有同样的问题=&gt; org.apache.camel.InvalidPayloadException - 没有可用的类型:java.io.InputStream但有值:....
它期望一个String但在Body中没有Pojo。其他解决方案是=&gt;
<setBody>
<simple>${header.myValue}</simple>
</setBody>
<!-- aufrug dokmanager -->
<toD uri="myUrl/cxf/myService/operation?parama1=${body}&param2=someVaue" />