【问题标题】:WSO2 custom handler work with JSON dataWSO2 自定义处理程序使用 JSON 数据
【发布时间】:2018-10-05 17:02:54
【问题描述】:

在自定义 WSO2 处理程序上编写我的服务使用 JSON。试图让处理程序读取 JSON 数据

Howto extract data from the JSON body of REST request inside a WSO2 ESB Synapse handler中的解决方案 没用

处理程序代码

@Override
public boolean handleRequest(MessageContext messageContext) {

    System.out.println("getEnvelope - "+ messageContext.getEnvelope().getBody().toString());

    org.apache.axis2.context.MessageContext mc = ((Axis2MessageContext) messageContext).getAxis2MessageContext();
    JSONObject jsonBody = new JSONObject(JsonUtil.jsonPayloadToString(mc));
    System.out.println("Payload in json -"+ jsonBody);

    String jsonPayloadToString = JsonUtil.jsonPayloadToString(((Axis2MessageContext) messageContext).getAxis2MessageContext()); 
    System.out.println("Payload in string -"+ jsonPayloadToString);

控制台输出

getEnvelope - <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>                                                                                                                      
Payload in json -{}                                                                                                                                                                                          
Payload in string -{}   

在axis2.xml中尝试了所有3个三个组合

        <messageBuilder contentType="application/json"
                        class="org.apache.axis2.json.JSONOMBuilder"/>
        <!--messageBuilder contentType="application/json"
                        class="org.apache.synapse.commons.json.JsonStreamBuilder"/-->
        <!--messageBuilder contentType="application/json"
                        class="org.apache.synapse.commons.json.JsonBuilder"/-->
-----------------
        <messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONMessageFormatter"/>
        <!--messageFormatter contentType="application/json"
                          class="org.apache.synapse.commons.json.JsonStreamFormatter"/-->
        <!--messageFormatter contentType="application/json"
                          class="org.apache.synapse.commons.json.JsonFormatter"/-->

任何帮助都会有很大帮助

谢谢

【问题讨论】:

  • 在打印正文之前尝试RelayUtils.buildMessage(messageContext);。并在axis2.xml文件中使用streambuilder/formatter。

标签: wso2 wso2-am


【解决方案1】:

在打印正文之前尝试RelayUtils.buildMessage(messageContext);

【讨论】:

  • 感谢@Bee 的回复仍然没有运气org.apache.axis2.context.MessageContext mc = ((Axis2MessageContext) messageContext).getAxis2MessageContext(); RelayUtils.buildMessage(mc); Sysout("getEnvelope - "+ mc.getEnvelope().getBody().toString()); JSONObject jsonBody = new JSONObject(JsonUtil.jsonPayloadToString(mc)); Sysout("Payload in json -"+ jsonBody); Sysout("Payload in xml -"+ mc); String jsonPayloadToString = JsonUtil.jsonPayloadToString(mc); Sysout("Payload in string -"+ jsonPayloadToString);
  • 输出getEnvelope - &lt;soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;jsonObject&gt;&lt;token&gt;8599947105184598&lt;/token&gt;&lt;/jsonObject&gt;&lt;/soapenv:Body&gt; Payload in json -{} Payload in xml -[MessageContext: logID=813d1f194b272676ca200341376a57e75024074be1035574] Payload in string -{} config&lt;messageBuilder contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamBuilder"/&gt; &lt;messageFormatter contentType="application/json" class="org.apache.synapse.commons.json.JsonFormatter"/&gt;请帮忙
【解决方案2】:

为您的 json 尝试此代码:

try {

            RelayUtils.buildMessage(((Axis2MessageContext) messageContext).getAxis2MessageContext());
        } 
    catch (XMLStreamException e) {
            e.printStackTrace();
        }
     catch (IOException e1) {
        e1.printStackTrace();
    }

    String body = JsonUtil.jsonPayloadToString(((Axis2MessageContext) messageContext).getAxis2MessageContext());
    String httpMethod = (String) ((Axis2MessageContext) messageContext).getAxis2MessageContext().getProperty("HTTP_METHOD");
    System.out.println("\n\nWSO2CustomHandler - handleRequest body!!" + body);
    System.out.println("\n\nWSO2CustomHandler - handleRequest httpMethod!!" + httpMethod);

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多