骡子:索引路径中的非法角色

时间:2017-03-03 23:24:16

标签: mule

我正在设置我的应用程序属性,如下所示:

    consumptionAPI.host = consumptionapi.dev.xxx.com
    consumptionAPI.report = report
    consumptionAPI.month = month
    consumptionAPI.csv = monthly.csv

并按以下方式访问我的配置:

     <http:request-config name="HTTP_Request_Configuration" host="${consumptionAPI.host}" port="80" doc:name="HTTP Request Configuration"/>




     <http:request config-ref="HTTP_Request_Configuration" path="${consumptionAPI.report}/${consumptionAPI.year}/{yr}/${consumptionAPI.month}/{mth}/${consumptionAPI.csv}" method="GET" doc:name="HTTP">   

    <http:request-builder>
          <http:uri-param paramName="yr" value="[flowVars.year]"/>
          <http:uri-param paramName="mth" value="[flowVars.month]"/>
       </http:request-builder>  
    </http:request> 

但是在运行流程时我收到以下错误:

java.net.URISyntaxException:索引7的权限中的非法字符:http:// $ {consumptionAPI.host}:80 / $ {consumptionAPI.report} / $ {consumptionAPI.year} / [flowVars.year] / $ {consumptionAPI.month} / [flowVars.month] / $ {consumptionAPI.csv}

它似乎不喜欢URL中的第一个字符,但不确定原因。

顺便说一下,如果我对网址进行硬编码,那就可以了。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

如果您没有为$ {consumptionAPI.year}提供价值,那么它会在路径中留下$和curley括号。这可能是一个问题,具体取决于您的文件系统。

或者它可能会将其折叠为&#34; //&#34;,在任何一种情况下,都可能导致问题。

答案 1 :(得分:0)

您提到了value="[flowVars.year]",它应该是value="#[flowVars.year]" 在两个flowVars表达式中,您都错过了#月份和年份流量变量。

因此,在您的网址http://${consumptionAPI.host}:80/${consumptionAPI.report}/${consumptionAPI.year}/[flowVars.year]/${consumptionAPI.month}/[flowVars.month]/${consumptionAPI.csv}中,它无法评估值

并确保您在${}中的网址中提到的所有变量都已在您的属性文件中定义