我在Mule ESB和Anypoint Studio上有点新鲜,所以我试图弄清楚如何在java变换器类中获取HTTP查询参数。
我试过了
Map<String, String> queryParams = message.getInboundProperty("http.query.params");
String firstname = queryParams.get("fname");
String lastname = queryParams.get("lname");
甚至和
一起去了String secques1 = driver.findElement(By.xpath("//*[@class='small-12 medium-4 medium-offset-4 columns']/div/div/div/div[1]/div/div[1]/label")).getText();
String lastWord = secques1.substring(secques1.lastIndexOf(" ")+1);`
但它们返回空值,我甚至尝试使用Callable Interface但我认为只有它是JAVA组件才可以使用它。
请告诉我,
感谢。
答案 0 :(得分: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>
现在,如果您使用查询参数点击网址,例如: - http://localhost:8081/test?fname=anirban&lname=sen
您将在控制台中获得以下结果: -
答案 1 :(得分:0)
您也可以在下面将财产作为单独的方法。
public class MyCustomTransformer扩展AbstractMessageTransformer { @覆盖 public Object transformMessage(MuleMessage message,String outputEncoding)抛出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;
}
}