如何在 MULE ESB 的 java 转换器中获取 HTTP 参数

How to fetch HTTP parameters in java transformer in MULE ESB

我对 Mule ESB 和 Anypoint Studio 有点陌生,所以我想弄清楚如何在 java 转换器 class.

中获取 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");

但它们 return 空值,我什至尝试使用可调用接口,但我认为只有当它是 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;

 }
} 

Mule 流将是:-

 <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

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

您还可以通过下面的单独方法获得 属性。

public class MyCustomTransformer 扩展了 AbstractMessageTransformer { @覆盖 public 对象 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;

     }
     }