mule多值回到
我们在调用接口时,有时候不仅要返回报文还想返回别的信息,那么这在MULE中是怎么实现的那?先看效果:
在这里例子中,不仅返回了报文,还返回了一个values值,这样就实现的返回多个值,下面看看具体是怎么实现的
1.这里我们需要用到4和组建 http、echo、Java、Message Properties这里我们要去其他值就不能用浏览器直接访问了,我们需要用代码去调用,这里的echo也是把用户发送的信息转换成payload对象,这样我们就可以通过代码去调用了。
2.这里的重点是Message Properties的配置下面看看他是如何配置的
看看这个类里是什么东西
=========================RetrnOtherInfo ===================
package values;
public class RetrnOtherInfo {
public static String otherInfo(){
return "code";
}
}
这个方法很简单,就提供了一个静态的方法,在这个方法里面处理要返回给客户的参数。
3.客户端是怎么或取的那?下面看下客户端调用代码:
==================================客户端调用代码=====================
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class TestValues {
public static void main(String[] args) {
OutputStream os = null;
String xml = "xmlInfo" ;//要发送的报文
try {
String returnXml = "" ; //返回的报文
URL url = new URL("http://127.0.0.1:8084/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);// 允许连接提交信息
connection.setRequestMethod("POST");// 网页提交方式“GET”、“POST”
StringBuffer sb = new StringBuffer();
sb.append(xml);
os = connection.getOutputStream();
os.write(sb.toString().getBytes());
os.close();
System.out.println("=======返回的报文头:"+connection.getHeaderFields());
System.out.println("=========编码======="+connection);
System.out.println("本次返回的其他值:"+connection.getHeaderFields().get("values").get(0));
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
String inputLine;
// f 1
while ((inputLine = br.readLine()) != null){
returnXml = inputLine;
}
System.out.println("本次返回的报文:"+returnXml);
} catch (Exception e) {
System.out.println(e);
}
}
}