0

我对 Mule ESB 和 Anypoint Studio 有点陌生,所以我试图弄清楚如何在 java 转换器类中获取 HTTP 查询参数。

我努力了

String firstname = message.getInboundProperty("fname");
String lastName = message.getInboundProperty("lname");

甚至和

Map<String, String> queryParams = message.getInboundProperty("http.query.params");
String firstname = queryParams.get("fname");
String lastname = queryParams.get("lname");

但它们返回空值,我什至尝试使用可调用接口,但我认为只有在它是 JAVA 组件时才能使用它。

请让我知道,

谢谢。

4

2 回答 2

2

如果要在 Java 转换器中使用,可以按照以下示例进行操作:-

public class MyCustomTransformer extends AbstractMessageTransformer {
 @Override
 public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {

     Map<String, String> queryParams = message.getInboundProperty("http.query.params");
     String fname=queryParams.get("fname");
     System.out.println("fname: "+fname);
     String lname=queryParams.get("lname");
     System.out.println("lname: "+lname);
     return message;

 }
} 

骡流将是:-

 <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>

 <flow name="Testlow">
   <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
  <custom-transformer class="MyCustomTransformer" doc:name="Java"/>
 </flow>

现在,如果您使用查询参数点击 url,例如:- http://localhost:8081/test?fname=anirban&lname=sen

您将在控制台中获得以下结果:-

在此处输入图像描述

于 2017-03-29T08:44:55.833 回答
0

您还可以在下面将财产作为单独的方法。

公共类 MyCustomTransformer 扩展 AbstractMessageTransformer { @Override public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {

        Map<String, String> queryParams = 
        message.getProperty("http.query.params", PropertyScope.INVOCATION);
        String fname=queryParams.get("fname");
        System.out.println("fname: "+fname);
        String lname=queryParams.get("lname");
        System.out.println("lname: "+lname);
        return message;

     }
     } 
于 2017-04-02T02:52:47.000 回答