首页 > 解决方案 > HTTP 出站网关 - uri 变量 - 编码

问题描述

我有一个 http 出站网关,需要通过 uri 变量进行替换。我正在发送一个字符串有效载荷

<int-http:outbound-gateway  
               url="https://ia-zatie.str13.tst.bnst.nh/ia-zaatie/rest/signan/v2/wg/{workgroupId}//actionType/New?max={maxCount}"
               http-method="GET" 
               header-mapper="headerMapper"
               expected-response-type="java.lang.String" request-factory="sslFactory" >
               <int-http:uri-variable name="workgroupId" expression="payload['workgroupId']" />
               <int-http:uri-variable name="maxCount" expression="payload['maxCount']"/>
        </int-http:outbound-gateway>

有效负载 - { "workgroupId":"BTL_IT", "maxCount":1}

嵌套异常是 org.springframework.expression.spel.SpelEvaluationException: EL1001E: 类型转换问题,无法在
org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler.handleRequestMessage(HttpRequestExecutingMessageHandler.爪哇:409)

为什么假设 workgroupId 的值是整数?请你告诉如何解决这个问题。

编辑: 我现在将代码更改为在控制器级别连接并根据动态部分的需要传递有效负载。新问题是“?” 变成 %3F 就像 - /New%3Fmax=1。我如何编码以及在哪里编码?

> <int-http:outbound-gateway    
>                  url="https://ia-zatie.str13.tst.bnst.nh/ia-zaatie/rest/signan/v2/wg/{workgroup}"
>                  http-method="GET" 
>                  header-mapper="headerMapper"
>                  expected-response-type="java.lang.String" request-factory="sslFactory" >
>              <int-http:uri-variable name="workgroup" expression="payload" />
>                       </int-http:outbound-gateway>

有效载荷:

String payload = gsRequest.getWorkgroup()+"/actionType/New?max="+ gsRequest.getMaxCount();
which is like - BL_IH/actionType/New?max=1

标签: springspring-integrationgatewayoutbound

解决方案


推荐阅读