无法解析服务器的响应:未知类型:nil

时间:2015-03-18 10:30:36

标签: java apache-camel xml-rpc

我试图制作一个从第三方网站获取xml-rpc数据的骆驼路线。问题是某些值是NIL。有没有办法配置路由接受这样的值?

网站:https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact

在最糟糕的情况下,我可以预先处理它并替换所有NIL,但我想知道是否有一些简单的解决方案

编辑:添加示例路线

<route>
    <from uri="timer://mainTimer?period=5000"/>
    <to uri="xmlrpc:https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact?defaultMethodName=test" />
    <to uri="mock:result" />
</route>        

此外,我尝试使用XmlRpcClientConfigurer,但没有运气 - 我是一个java noob所以不知道我是否正确行事

public class xmlrpcConfigurer implements XmlRpcClientConfigurer {

    @Override
    public void configureXmlRpcClient(XmlRpcClient client) {
        XmlRpcClientConfigImpl clientConfig = (XmlRpcClientConfigImpl)client.getClientConfig();
        clientConfig.setEnabledForExtensions(true);    

    }

}

背后的想法是,根据http://en.wikipedia.org/wiki/XML-RPC nil标签是一个扩展,我真的不知道它是否符合我的想法......

1 个答案:

答案 0 :(得分:0)

嗯我无法找到解决方案所以我必须以另一种方式解决它 - 我删除了nil元素

<dataFormats>
    <xmlrpc id="xmlrpcResponse" request="false"/>
</dataFormats>    
<route>
    <from uri="timer://mainTimer?period=60000"/>
    <to uri="https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact?defaultMethodName=test" />
    <process ref="removeNilFromXml"/>   
    <unmarshal ref="xmlrpcResponse"/>
    <to uri="mock:result" />
</route>

removeNilFromXml.java:

public class removeNilFromXml implements Processor {

    public void process(Exchange exchange) throws Exception {
        String data = exchange.getIn().getBody(String.class);
        String nonildata = data.replace("<nil/>", "");  

        exchange.getIn().setBody(nonildata);
    }

}

不是最好的解决方案,但它有效......