【问题标题】:Omit port with Mule ESB http:request endpoint使用 Mule ESB http:request 端点省略端口
【发布时间】:2020-04-03 00:17:03
【问题描述】:

我正在尝试使用 Mule ESB http:request 端点从 api.crossref.org 获取数据。我发现如果包含端口号,我会得到 404。也就是这个请求成功了:

GET http://api.crossref.org/works?filter=doi%3A10.1080%2F10573560601158461&sort=score&order=desc HTTP/1.1
Host: api.crossref.org
<blank line>
<blank line>

但是这个失败了:

GET http://api.crossref.org:80/works?filter=doi%3A10.1080%2F10573560601158461&sort=score&order=desc HTTP/1.1
Host: api.crossref.org:80
<blank line>
<blank line>

有没有办法强制 Mule 从标头中省略端口号? HTTPS 和 443 也会发生这种情况。

【问题讨论】:

    标签: http mule


    【解决方案1】:

    您可以尝试手动添加 Host 标头,这意味着在请求构建器中:

    骡子 3

    <http:request config-ref="HTTP_Request_Configuration" path="test" method="GET">
        <http:request-builder>
            <http:header headerName="Host" value="api.crossref.org" />
        </http:request-builder>
    </http:request>
    

    骡子 4

      <http:request config-ref="HTTP_Request_Configuration" path="test" method="GET">
        <http:headers>
          #[{"Host" : "api.crossref.org"}]
        </http:headers>
      </http:request>
    

    服务器应该使用端口处理 Host 标头,但不幸的是有些服务器没有。有关详细信息,请参阅HTTP Troubleshooting Guide。 高温

    【讨论】:

    • 我得到这个异常:org.xml.sax.SAXParseException;行号:51;列号:25; cvc-complex-type.2.4.a:发现以元素“http:request-builder”开头的无效内容。
    • 您使用的是哪个版本的 Mule?
    • 骡子 4.0 版本
    • 然后查看docs.mulesoft.com/connectors/http/… 以了解正确的语法。我分享的示例适用于 Mule 3。
    • 谢谢,真的很有用。
    【解决方案2】:

    只需使用您的 URL 尝试使用 http 的端口 80 和 https 的端口 443,它们是默认端口,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多