2017-07-19 19 views
0

我想一个JSON有效载荷张贴在MuleESB公共POST REST API,但我得到这个错误:获取响应404同时发布JSON有效载荷POST REST API

org.mule.module .http.internal.request.ResponseValidatorException:将响应代码404映射为失败。

我可以通过Postman Chrome App调用带有JSON正文的API,但不能通过Postman Desktop App或MuleESB调用API。我在过去的2天里一直在谷歌周围,但仍然不知道我错过了什么。如果你有什么线索导致这不起作用,请给我启发。

这是JSON有效载荷:

{ 
    "username": "dummy", 
    "email": "[email protected]", 
    "firstName": "dummy", 
    "lastName": "dummy" 
} 

这里是我的MuleESB代码(我使用3.8.3)的片段:

 <http:request-config name="HTTP_Request_Configuration" host="api.domain.com" port="443" doc:name="HTTP Request Configuration" protocol="HTTPS" responseTimeout="180000" tlsContext-ref="TLS_TrustStore"/> 
     <tls:context name="TLS_TrustStore" doc:name="TLS"> 
      <tls:trust-store path="cacerts.jks" password="pwd"/> 
     </tls:context> 
     ... 
     <dw:transform-message doc:name="Transform Message" metadata:id="c77537ba-aaf3-4497-9f09-06792d1f7556"> 
     <dw:input-payload mimeType="application/java"/> 
     <dw:input-variable doc:sample="sample_data\UserDefined.dwl" variableName="userData"/> 
     <dw:set-payload><![CDATA[%dw 1.0 
%output application/json 
--- 
{ 
    username: flowVars.username as :string, 
    email: flowVars.email as :string, 
    firstName: flowVars.firstName as :string, 
    lastName: flowVars.lastName as :string 
}]]></dw:set-payload> 
     </dw:transform-message> 
     <logger message="payload:#[payload]" level="INFO" doc:name="Logger"/>   
     <set-property propertyName="Content-Type" value="application/json" encoding="UTF-8" mimeType="application/json" doc:name="Property"/>   
     <until-successful maxRetries="3" doc:name="Until Successful" synchronous="true"> 
      <http:request config-ref="HTTP_Request_Configuration" path="/api/1/users" method="POST" doc:name="HTTP"> 
       <http:request-builder> 
        <http:header headerName="Authorization" value="abcdefg"/> 
       </http:request-builder> 
      </http:request> 
     </until-successful> 
+1

我认为你需要给你附上http:requester-config这个xml流并告诉我们你想要打什么URL。 (即404应该表示您正在输入错误的地址,通过计算http:requester-config中的基地址/路径来计算路径+ http:请求消息处理器中使用的路径) –

+0

Hi @AndréSchembri,添加了HTTP请求配置您的请求。我尝试访问的路径是https://api.domain.com/api/1/users。 –

+0

我在我的虚拟机里做Mule开发,发现我的虚拟机中的邮差也抛出了这个错误,但是在我本地机器上的邮差不是。虚拟机可能会出现什么问题?我可以检查什么和如何检查? –

回答

-1
+0

这与您的问题有何关系?远程关闭错误与您遇到的404错误看起来完全不同。您能否提供更多关于您如何解决此问题以帮助未来SO用户的信息? ;) –

+0

Hi @PierreB。因为Postman Desktop App&MuleESB不接受https://api.domain.com:443/api/1/users,而是https://api.domain.com/api/1/users,所以我开始研究为什么他们不接受端口443,然后我尝试了几件事(奇怪的是我不记得那些是什么,也许我现在太高兴了,现在它已经修复了),这最终导致我发现已知的远程关闭错误问题在Mule 3.8.x和Mulesoft知识文章中提出的解决方法有所帮助。 –

+0

嗯,好的。有人似乎已经在你的答案上投下了一个赞成票,通常在SO上它更好地解释了引导你到这里的步骤和想法,所以它可以帮助其他人;) –