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

}




  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值