HttpClient4.5.2通过POST发送XML

需求:

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

}




你可能感兴趣的:(HttpClient4.5.2通过POST发送XML)