首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在类mediator和xml wso2 apim 3.2.0中设置自定义响应代码

无法在类mediator和xml wso2 apim 3.2.0中设置自定义响应代码
EN

Stack Overflow用户
提问于 2021-08-23 11:16:38
回答 1查看 62关注 0票数 0

我在自定义序列(Xml)中使用了java类中介器,在该序列中处理请求负载并检查用户是否有效。

如果用户合法,则会将请求发送到后台。

但是,如果用户是无效的,则不应该将请求发送到后端,并且需要通过java类中介器或自定义序列(Xml)来设置响应代码。目前,我正在接收202已接受,我需要覆盖状态代码为401。

在java类中介器中,我使用了以下几行代码来设置属性。

代码语言:javascript
代码运行次数:0
运行
复制
org.apache.axis2.context.MessageContext msgContext = ((Axis2MessageContext) mc).getAxis2MessageContext();
msgContext.setProperty("HTTP_SC", "401"); 
//msgContext.setProperty("HTTP_SC", 401); (tried without quotes 401 too!!)
//mc.setProperty("HTTP_SC", 401);
((Axis2MessageContext) mc).setAxis2MessageContext(msgContext);

我使用以下代码行通过自定义序列(Xml)进行了尝试,

代码语言:javascript
代码运行次数:0
运行
复制
<property action="remove" name="HTTP_SC" scope="axis2"/>
<property name="SC_ACCEPTED" scope="axis2" value="false"/>
<property name="HTTP_SC" scope="axis2" value="401"/>
<send/>

在这两种情况下,都不返回401,只返回202。

建议一种在类中介器或自定义序列中执行此操作的方法。

EN

回答 1

Stack Overflow用户

发布于 2021-08-23 12:05:31

您可以尝试以下中介

代码语言:javascript
代码运行次数:0
运行
复制
<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
    <resource methods="GET">
        <inSequence>
            <property name="HTTP_SC" scope="axis2" value="409"/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>
代码语言:javascript
代码运行次数:0
运行
复制
curl -is http://localhost:8280/test

HTTP/1.1 401 Unauthorized

您可以使用以下Dockerfile对其进行测试或试用

代码语言:javascript
代码运行次数:0
运行
复制
FROM wso2/wso2am:3.2.0

COPY test.xml ${WSO2_SERVER_HOME}/repository/deployment/server/synapse-configs/default/api/test.xml

EXPOSE 8280
代码语言:javascript
代码运行次数:0
运行
复制
docker build -t test .
docker run --rm --name test -it -p 8280:8280 test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68891693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档