package com.yutu.fileupload.controller;
import org.junit.platform.commons.util.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@Controller
public class XmlController {
@RequestMapping("/xmlString")
public String xmlString(String str){
return str;
}
@RequestMapping("/xmlTest")
public void sendXmlAndReturnXml(HttpServletRequest request, HttpServletResponse response) throws IOException{
System.out.println("请求的xml数据为:\n" + getXmlFromRequest(request));
response.setCharacterEncoding("GBK");
response.getWriter().print("<aaa><ddd>bbbccc服务端返回响应xml数据,在客户端可以获取到</ddd></aaa>");
}
private String getXmlFromRequest(HttpServletRequest request)throws IOException {
String reqXml = "";
reqXml = request.getQueryString();
if (StringUtils.isBlank(reqXml)) {
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();
}
System.out.println("reqXml: " + reqXml);
return reqXml;
}
}
package com.paic.test;
import com.yutu.fileupload.FileUploadApplication;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = FileUploadApplication.class)
public class XmlTest {
@Test
public void testStr(){
StringBuilder sb = new StringBuilder();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<Message>");
sb.append(" <header>");
sb.append(" <action>readMeetingStatus</action>");
sb.append(" <service>meeting</service>");
sb.append(" <type>xml</type>");
sb.append(" <userName>admin</userName>");
sb.append(" <password>admin</password>");
sb.append(" <siteName>box</siteName>");
sb.append(" </header>");
sb.append(" <body>");
sb.append(" <confKey>43283344</confKey>");
sb.append(" </body>");
sb.append("</Message>");
}
@Test
public void test(){
try{
URL url = new URL("http://127.0.0.1:18808/xmlTest");
String xml = "<aaa><ddd>客户端请求的xml数据</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();
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());
}catch (Exception e){
e.printStackTrace();
}
}
}
package com.yutu.fileupload.service.impl;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpsServer;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.util.Locale;
@Service
public class PayServiceImpl implements HttpHandler {
static {
try{
HttpServer httpServer = HttpsServer.create(new InetSocketAddress(18808),100);
httpServer.createContext("/pay",new PayServiceImpl());
httpServer.start();
System.out.println("18808端口创建成功");
}catch (IOException e){
e.printStackTrace();
}
}
@Override
public void handle(HttpExchange httpExchange) throws IOException {
System.out.println("开始处理请求");
try{
InputStream reqBody = httpExchange.getRequestBody();
InputStreamReader inputStreamReader = new InputStreamReader(reqBody);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String str = "";
while ((str = bufferedReader.readLine()) != null){
stringBuilder.append(str.trim());
}
String reqStr = stringBuilder.toString();
}catch (IOException e){
e.printStackTrace();
}
}
}