在Message Broker Toolkit建立好消息流之后,需要Java发送请求到ESB服务器,触发消息流的响应,执行消息流之后再返回响应
java端发送请求用到的是apache httpclient包,使用该包可以很方便的实现请求及响应。下面附上我的请求代码:
package com.watson.httpclient;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class HttpClient2ESB {
public static void main(String[] args) {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://localhost:7080/jmoa2ec/getOrders");
//发送请求的XML报文,到达ESB后会自动用XMLNS解析器进行解析
String xmlStr = "<request>" + " <LoginName>cnpoweruser</LoginName>"
+ " <Password>i9Pt$hcO</Password>"
+ " <Company>jmoa</Company>"
+ " <OrderID>4545957</OrderID>"
+ " <OrderDateStart>2014-10-30</OrderDateStart>"
+ " <OrderDateEnd>2014-10-31</OrderDateEnd>" + "</request>";
//消息体
StringEntity entity = new StringEntity(xmlStr, "utf-8");
// 消息头
httppost.addHeader("Content-Type", "text/xml");
//将消息体绑定请求
httppost.setEntity(entity);
try {
//开发发送请求,并返回响应消息
CloseableHttpResponse response = httpclient.execute(httppost);
//获取得到响应的消息体
HttpEntity resEntity = response.getEntity();
//将消息体读入InputStream,以备输出使用。
InputStreamReader reader = new InputStreamReader(
resEntity.getContent(), "utf-8");
char[] buff = new char[1024];
int length = 0;
while ((length = reader.read(buff)) != -1) {
//将响应消息打印在控制台上。
System.out.println(new String(buff, 0, length));
}
httpclient.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}