首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主机http:request中的Mule参数不能正常工作

主机http:request中的Mule参数不能正常工作
EN

Stack Overflow用户
提问于 2015-04-21 17:24:03
回答 1查看 1.6K关注 0票数 1

我试图使入站端点使用REST,如果我不添加筛选器参数,但当我这样做时,它就不能工作了。

代码语言:javascript
复制
<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>

在我的记录器中,我可以看到查询字符串确实存在。

代码语言:javascript
复制
INFO  2015-04-21 11:21:25,389 [[panierv2].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: /getCountryByValue?Canada
INFO  2015-04-21 11:21:25,411 [[panierv2].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: Canada

但最终它并没有给我正确的回报:

代码语言:javascript
复制
<api xmlns:xlink="http://www.w3.org/1999/xlink">
<countries>
</countries>
</api>

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

Mywebsite.org/api/name?display=name,id&filtername=Canada

我明白了:

代码语言:javascript
复制
<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>

问题似乎在于&在主机上。但我似乎不能让它起作用。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 19:31:57

您应该在请求元素中添加这些查询参数,而不是请求-config。

它应该是这样的:

代码语言:javascript
复制
<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,然后将其余部分设置为请求中的路径,因为这样更容易重用。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29779115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档