java http xml请求_java发送Http请求传送xml数据,并返回xml数据

在工作中有用到HTTP请求外部地址传递数据. 用Url这个类明显效率低下,所以改用连接池概念的URL请求,这将大大提高了请求效率. 主发送类 [java]  view plain copy package com.cdg.test;      import java.util.HashMap;   import java.util.Map;      import or

客户端发送请求、以及处理服务端响应代码为://发送xml请求

URL url = new URL("http://127.0.0.1:8080/Test/sendXmlAndReturnXml.do");

String xml = "cccccc客户端请求的xml数据cccccccc";

URLConnection conn = null;

conn = url.openConnection();

conn.setUseCaches(false);

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setRequestProperty("Content-Length", Integer.toString(xml.length()));

conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");

OutputStream ops = conn.getOutputStream();

OutputStreamWriter osw = new OutputStreamWriter(ops, "GBK");

osw.write(xml);

osw.flush();

osw.close();

//发送成功后,获取服务器的响应xml串:

StringBuffer sb = new StringBuffer();

String line = "";

InputStream is = conn.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));//三层包装

while ((line = br.readLine()) != null) {

sb.append(line+ "\r\n");

}

System.out.println(sb.toString());

服务端代码为:

@Controller

public class TestXMLAction {

@RequestMapping("/sendXmlAndReturnXml.do")

public void sendXmlAndReturnXml(HttpServletRequest request, HttpServletResponse response) throws IOException{

//获取请求的xml

System.out.println("请求的xml数据为:\n" + getXmlFromRequest(request));

//服务端响应xml数据

response.getWriter().print("bbbccc服务端返回响应xml数据,在客户端可以获取到");

}

//从HTTP请求中取出请求的XML

private String getXmlFromRequest(HttpServletRequest request)throws IOException {

String reqXml = "";

reqXml = request.getQueryString(); //GET请求

if (StringUtils.isBlank(reqXml)) { //POST请求

BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

sb.append(line);

}

br.close();

reqXml = sb.toString();

}

return reqXml;

}

}


版权声明:本文为weixin_42502537原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。