import com.google.gson.Gson;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class testHttpServletRequest {
@PostMapping("/testHttpServletRequest")
public String testHttpServletRequest(HttpServletRequest req, HttpServletResponse res) throws IOException {
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
String str;
try {
br = req.getReader();
while ((str = br.readLine()) != null){
sb.append(str);
}
} catch (IOException e) {
throw new IOException("request读取失败");
}finally {
if (br != null){
try {
br.close();
}catch (IOException e){
throw new IOException("request读取失败");
}
}
}
str = sb.toString();
Gson gson = new Gson();
Map<String, Object> map = new HashMap<>();
map = gson.fromJson(str,map.getClass());
Map<String, String> receiveHeader = (Map<String, String>) map.get("requestHead");
Map<String, String> requestBody = (Map<String, String>) map.get("requestBody");
//String字符串要求是json格式的
//{"requestHead":{},
//"requestBody:{}}
return null;
}
}
直接用@RequestBody注解取字符串转map出现了中文乱码的问题,改为用流接收之后再转解决了问题,记录一下