【问题标题】:mule set http header values from postman rest clientmule 从邮递员休息客户端设置 http 标头值
【发布时间】:2015-04-22 01:46:09
【问题描述】:

骡码

<flow  name="getDetails">
    <http:inbound-endpoint doc:description="This endpoint receives an HTTP message." doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081" path="getDetails"/>
    <json:xml-to-json-transformer doc:name="XML to JSON" mimeType="text/json"  ignoreBadInput="true"/> 
    <logger message="xml to json output #[message.payload]" level="INFO" doc:name="Logger"/>

      <logger message=" custom header username ... #[message.outboundProperties.get('http.headers.username')]" level="INFO" />
      <logger message=" custom header username ... #[message.inboundProperties.get('http.headers.username')]" level="INFO" />
    <http:outbound-endpoint exchange-pattern="request-response"  address="http://localhost:8081/callReservation" method="POST" contentType="application/json" doc:name="HTTP"/>
</flow>

这里我将输入作为正文中的员工 xml

并在标题中 我在邮递员休息客户端中提供 username=user1 password=pwd1

<?xml version="1.0" encoding="UTF-8"?>
<employee>
<name>abc</name>
<address>add1</address>
<phone>1212</phone>
</employee>

我收到如下错误

com.ctc.wstx.exc.WstxUnexpectedCharException:序言中出现意外字符“{”(代码 123);预期'

使用 header 和 xmlto json 转换对我来说是强制性的。 谁能帮帮我

【问题讨论】:

  • 你为什么使用 XML 到 JSON ?您需要发送到出站的数据是什么??
  • XML 到 JSON 的转换是我的要求。
  • 您要为外部出站服务放置什么有效负载.. 是 JSON 还是 XML?
  • org.mule.api.processor.LoggerMessageProcessor:自定义标头用户名 ... null 但我希望显示标头名称。我可以做的那个 xml json 转换。 .主要使用标题用户名和密码。显示在日志消息中。它显示为空。

标签: mule


【解决方案1】:

以下代码对我来说很好。 HTH。

<flow name="getDetails" doc:name="getDetails">
    <http:inbound-endpoint doc:description="This endpoint receives an HTTP message."
        doc:name="HTTP" exchange-pattern="request-response" host="localhost"
        port="1000" path="getDetails" />
    <json:xml-to-json-transformer doc:name="XML to JSON"
        mimeType="text/json" ignoreBadInput="true" />
    <logger message="xml to json output #[message.payload]" level="INFO"
        doc:name="Logger" />
    <logger
        message=" custom header username ... #[message.inboundProperties.'http.headers'.username]"
        level="INFO" doc:name="Logger"/>
    <http:outbound-endpoint exchange-pattern="request-response"
        address="http://localhost:1001/callReservation" method="POST"
        contentType="application/json" doc:name="HTTP" />
</flow>
<flow name="testFlow1" doc:name="testFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="1001" path="callReservation" doc:name="HTTP"/>
    <json:json-to-xml-transformer doc:name="JSON to XML"/>
    <logger message="Data received : #[payload]" level="INFO" doc:name="Logger"/>
</flow>

【讨论】:

【解决方案2】:

我正在使用以下方法获得价值:-

<logger   message=" custom header username ... #[message.inboundProperties['username']]"
        level="INFO" doc:name="Logger"/> 

你需要在 postman 的 body 中传递 XML

更新

我得到的值如下:-

【讨论】:

  • 密码相同..您需要使用此 MEL 表达式,只需替换密码代替用户名
  • 在邮递员的正文中传递 XML 。工作正常。但是,如果我再次设置标题用户名,它只会显示 null。我在双向 form-data 中尝试了 header,在 rest client 中尝试了 ------x-www-form-urlencoded。以上代码显示头值
  • 检查我更新的答案..把用户名放在标题部分
  • 添加您可以获取标题 username 的日志消息。对我来说,它仍然只显示 null
  • 检查我在日志中得到的答案
【解决方案3】:

在 http:outBound 之后使用数据映射器转换为 json 响应。

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 2021-08-26
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多