需求:
通过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; } }