我面临一个奇怪的问题。我已将int-http:outbound-gateway
配置如下:
<int:channel id="PQGetMemberMainScreen-Amisys-Channel" />
<int:chain input-channel="PQGetMemberMainScreen-Amisys-Channel" output-channel="PQGetMemberMainScreen-ExternalSystem-Response" >
<int-xml:xslt-transformer xsl-resource="${stylesheet.amisys.soaXml.PQGetMemberMainScreen}" />
<int:service-activator ref="httpOutboundGatewayHandler" method="buildHttpOutboundGatewayRequest" />
<int-http:outbound-gateway url-expression="headers.restResourceUrl"
http-method-expression="headers.httpMethod"
expected-response-type="java.lang.String" >
</int-http:outbound-gateway>
</int:chain>
我无法使用上述出站网关点击休息服务,因为它给出了404错误。
HTTP request execution failed for URI [http://dstXX:30114/amisys-soa/rest/clientd/groups/KISHG2/history?v=1&eao=02112016]
......
Caused by: org.springframework.web.client.HttpClientErrorException: 404 Not Found
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:532)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:488)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:460)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:409)
at org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler.handleRequestMessage(HttpRequestExecutingMessageHandler.java:372)
... 138 more
奇怪的是,相同的URL工作正常,并在使用REST客户端命中服务时获得响应。我已经验证了标题和方法类型,发现它们应该是一样的。
有关如何进一步处理的任何建议吗?
答案 0 :(得分:1)
奇怪的是,相同的URL工作正常,并在使用REST客户端命中服务时获得响应。我已经验证了标题和方法类型,发现它们应该是一样的。
您真的应该比较来自此<int-http:outbound-gateway>
和该REST客户端的完整请求。
因为我们404 Not Found
看起来你在SI情况下遗漏了一些标题或请求参数。或者有一些额外的标头使您的REST服务拒绝该请求。
为此,您可以使用nay网络跟踪工具。例如。我在Windows上使用TCP Trace。