主机http:请求配置中的Mule参数工作不正常

主机http:请求配置中的Mule参数工作不正常,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,我试图创建一个入站端点来使用RESTAPI,如果我不添加过滤器参数,它就可以工作,但是当我添加过滤器参数时,它就不工作了 <http:request-config name="HTTP_Request_Configuration" host="mywebsite.org/api/countries?display=[name,id]&amp;filter[name]=#[message.inboundProperties.'http.query.string']" port="4

我试图创建一个入站端点来使用RESTAPI,如果我不添加过滤器参数,它就可以工作,但是当我添加过滤器参数时,它就不工作了

<http:request-config name="HTTP_Request_Configuration"  host="mywebsite.org/api/countries?display=[name,id]&amp;filter[name]=#[message.inboundProperties.'http.query.string']" port="433" doc:name="HTTP Request Configuration" >
        <http:basic-authentication username="user" password="123"/>
    </http:request-config>


<flow name="CountryByValue">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8080" path=countryByValue" doc:name="HTTP"/>
        <logger level="INFO" message="#[message.payloadAs(java.lang.String)]" doc:name="Logger"/>
        <logger level="INFO" message="#[message.inboundProperties.'http.query.string']" doc:name="Logger"/>
        <logger level="INFO" doc:name="Logger"/>
        <http:request config-ref="HTTP_Request_Configuration" path="/" method="GET" doc:name="REST API">
        </http:request>
        <logger level="INFO" message="#[message.payloadAs(java.lang.String)]" doc:name="Logger"/>
        <logger level="INFO" doc:name="Logger"/>
    </flow>
但最终它并没有给我正确的答案:

<api xmlns:xlink="http://www.w3.org/1999/xlink">
<countries>
</countries>
</api>

如果我使用链接直接在浏览器中执行此操作,它将起作用:

mywebsite.org/api/countries?display=[name,id]&filter[name]=加拿大

我明白了:

<api xmlns:xlink="http://www.w3.org/1999/xlink">
<countries>
<country>
<id>
<![CDATA[ 4 ]]>
</id>
<name>
<language id="2" xlink:href="sdfg">
<![CDATA[ Canada ]]>
</language>
<language id="3" xlink:href="sdfg">
<![CDATA[ Canada ]]>
</language>
</name>
</country>
</countries>
</api>

问题似乎出在主机中。但我似乎不能让它工作


谢谢。

您应该在request元素中添加这些查询参数,而不是在request配置中

它应该是这样的:

<http:request-config name="HTTP_Request_Configuration"  host="mywebsite.org" basePath="api" port="443" protocol="HTTPS" doc:name="HTTP Request Configuration" >
    <http:basic-authentication username="user" password="123"/>
</http:request-config>
...
<http:request config-ref="HTTP_Request_Configuration" path="/countries" method="GET" doc:name="REST API">
    <http:request-builder>
        <http:query-param paramName="display" value="[name,id]" />
        <http:query-param paramName="filter[name]" value="#[message.inboundProperties.'http.query.string']" />
    </http:request-builder>
</http:request>

...
我使主机在api处结束,然后在请求中将其余部分设置为路径,因为这样更易于重用


希望能有所帮助。

您好,谢谢您抽出时间来帮助我。奇怪的是,我现在从api方面得到了一个错误:
code
“>
code
是否有办法记录我的传出完整URL,以查看它是否与浏览器中的内容完全相同?看看错误是否不在api方面?我认为这将出现在mule的未来版本中。不过,您可以使用wireshark之类的东西来嗅探网络上的请求。您好,我已经能够在api端显示错误,但问题似乎来自Mule…下面是错误
显然Mule发送的是
http://mywebsite.org/api/:433
因为当我在浏览器中输入此内容时同样的错误。它似乎只添加了我设置的端口,如果我删除它,它会给出与80相同的错误。有什么想法吗?我也试着把端口放在
http:request
中,但我得到了同样的错误。
<http:request-config name="HTTP_Request_Configuration"  host="mywebsite.org" basePath="api" port="443" protocol="HTTPS" doc:name="HTTP Request Configuration" >
    <http:basic-authentication username="user" password="123"/>
</http:request-config>
...
<http:request config-ref="HTTP_Request_Configuration" path="/countries" method="GET" doc:name="REST API">
    <http:request-builder>
        <http:query-param paramName="display" value="[name,id]" />
        <http:query-param paramName="filter[name]" value="#[message.inboundProperties.'http.query.string']" />
    </http:request-builder>
</http:request>