如何在MULE ESB的java transformer中获取HTTP参数

如何在MULE ESB的java transformer中获取HTTP参数,mule,anypoint-studio,mule-esb,Mule,Anypoint Studio,Mule Esb,我对Mule ESB和Anypoint Studio有点陌生,所以我试图弄清楚如何在java transformer类中获取HTTP查询参数 我试过了 String firstname = message.getInboundProperty("fname"); String lastName = message.getInboundProperty("lname"); 甚至跟 Map<String, String> queryParams = message.getInbound

我对Mule ESB和Anypoint Studio有点陌生,所以我试图弄清楚如何在java transformer类中获取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");
Map queryParams=message.getInboundProperty(“http.query.params”);
String firstname=queryParams.get(“fname”);
字符串lastname=queryParams.get(“lname”);
但它们返回空值,我甚至尝试过使用可调用接口,但我认为只有当它是JAVA组件时才可能使用它

请让我知道


谢谢。

如果您想在Java transformer中使用,可以遵循以下示例:-

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;

 }
} 
公共类MyCustomTransformer扩展了AbstractMessageTransformer{
@凌驾
公共对象transformMessage(多消息消息、字符串输出编码)引发TransformerException{
Map queryParams=message.getInboundProperty(“http.query.params”);
字符串fname=queryParams.get(“fname”);
System.out.println(“fname:+fname”);
String lname=queryParams.get(“lname”);
System.out.println(“lname:+lname”);
返回消息;
}
} 
而骡流将为:-

 <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,例如:-

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


如果要在Java transformer中使用,可以遵循以下示例:-

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;

 }
} 
公共类MyCustomTransformer扩展了AbstractMessageTransformer{
@凌驾
公共对象transformMessage(多消息消息、字符串输出编码)引发TransformerException{
Map queryParams=message.getInboundProperty(“http.query.params”);
字符串fname=queryParams.get(“fname”);
System.out.println(“fname:+fname”);
String lname=queryParams.get(“lname”);
System.out.println(“lname:+lname”);
返回消息;
}
} 
而骡流将为:-

 <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,例如:-

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


您也可以通过下面的单独方法获取属性

公共类MyCustomTransformer扩展了AbstractMessageTransformer{ @凌驾 公共对象transformMessage(多消息消息、字符串输出编码)引发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;

     }
     } 
映射查询参数=
message.getProperty(“http.query.params”,PropertyScope.INVOCATION);
字符串fname=queryParams.get(“fname”);
System.out.println(“fname:+fname”);
String lname=queryParams.get(“lname”);
System.out.println(“lname:+lname”);
返回消息;
}
} 

您也可以通过下面的单独方法获取属性

公共类MyCustomTransformer扩展了AbstractMessageTransformer{ @凌驾 公共对象transformMessage(多消息消息、字符串输出编码)引发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;

     }
     } 
映射查询参数=
message.getProperty(“http.query.params”,PropertyScope.INVOCATION);
字符串fname=queryParams.get(“fname”);
System.out.println(“fname:+fname”);
String lname=queryParams.get(“lname”);
System.out.println(“lname:+lname”);
返回消息;
}
} 

是的,现在可以使用地图了。有趣的是,我想知道我第一次尝试的时候发生了什么?是的,现在使用地图就可以了。有趣的是,我想知道我第一次尝试时发生了什么?