需求:
通过HttpClient的POST,发送XML数据到一个服务接口,服务接口返回一个XML文件,对XML文件进行解析得到JSON数据,从而显示到页面上
HttpClient版本:4.5.2
下载地址:http://hc.apache.org/downloads.cgi
第一次使用HttpClient,3和4差异比较大,这里以4.5.2为例
1、首先创建一个方法getXMLString的方法,将需要传输的XML给拼接出来
2、创建sendXMLDataByPost方法,传递两个参数进去,一个是服务的url,一个是需要传递的XML
在设置参数名的时候需要注意传入的参数名是什么
BasicNameValuePair("xml", xmlData)
比如这里服务需要传入的参数名是“xml”,传入的值时从getXMLString中获取到的xml值
因为我这里使用的服务接口有测试窗口,可以通过测试窗口查看服务传递的参数名
3、创建一个Main方法,对POST发送XML进行测试
public class XMLClient {
private HttpClient client;
public static void main(String[] args) throws Exception {
XMLClient client = new XMLClient();
//发送XML数据到服务
String result = client.sendXMLDataByPost("http://local/test", client.getXMLString());
System.out.println(result);
}
// 获取XML
public String getXMLString() {
String XML_HEADER = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
StringBuffer sb = new StringBuffer();
sb.append(XML_HEADER);
sb.append("<a>");
sb.append("<b>");
sb.append("<c>");
sb.append("DWMC");
sb.append("</c>");
sb.append("<d>");
sb.append("id=10");
sb.append("</d>");
sb.append("</SELECT>");
sb.append("</b>");
sb.append("</a>");
// 返回String格式
return sb.toString();
}
// 使用POST方法发送XML数据
public String sendXMLDataByPost(String url, String xmlData) throws Exception {
if (client == null){
client = HttpClients.createDefault();
}
HttpPost post = new HttpPost(url);
List<BasicNameValuePair> parameters = new ArrayList<>();
parameters.add(new BasicNameValuePair("xml", xmlData));
post.setEntity(new UrlEncodedFormEntity(parameters,"UTF-8"));
HttpResponse response = client.execute(post);
System.out.println(response.toString());
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
return result;
}
}