客户端发送请求、以及处理服务端响应代码为:
服务端代码为:
//发送xml请求
URL url = new URL("http://127.0.0.1:8080/Test/sendXmlAndReturnXml.do");
String xml = "<aaa><ddd>cccccc客户端请求的xml数据cccccccc</ddd></aaa>";
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("<aaa><ddd>bbbccc服务端返回响应xml数据,在客户端可以获取到</ddd></aaa>");
}
//从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;
}
}