省略Mule ESB http:request端点的端口

省略Mule ESB http:request端点的端口,http,mule,Http,Mule,我正在尝试使用Mule ESBhttp:requestendpoint从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

我正在尝试使用Mule ESB
http:request
endpoint从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>
GEThttp://api.crossref.org/works?filter=doi%3A10.1080%2F10573560601158461&sort=score&order=desc HTTP/1.1
主持人:api.crossref.org
但这一次失败了:

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>
GEThttp://api.crossref.org:80/works?filter=doi%3A10.1080%2F10573560601158461&sort=score&order=desc HTTP/1.1
主持人:api.crossref.org:80

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

您可以尝试手动添加主机头,这意味着在请求生成器中:

骡子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>

#[{“主机”:“api.crossref.org”}]
服务器应该使用端口处理主机头,但不幸的是,有些服务器没有。有关更多详细信息,请参阅。
HTH

只要在URL中尝试http的端口80和https的端口443,它们都是默认端口,应该可以正常工作。

我遇到了这个异常:org.xml.sax.SAXParseException;行号:51 ;;栏目号:25;cvc复杂类型.2.4.a:发现以元素“http:request builder”开头的内容无效。您使用的是哪个版本的Mule?有关正确语法,请参阅Mule 4.0版本。我分享的例子是Mule 3。谢谢,它真的很有用。