我无法让Spring获取POST
数据。 Controller应该获取字符串然后回显。但是,我正在
响应:echo:null
在main()方法
我该怎么办才能修复它?
RestController
@RestController
@RequestMapping("/")
public class HelloWorldController {
@RequestMapping(method = RequestMethod.GET)
public String get() {
return "test get method";
}
@RequestMapping(method = RequestMethod.POST)
public String post(String string) {
return "echo: " + string;
}
}
测试POST功能
public static void main(String[] args) {
String urlString = "http://localhost/Test/";
try{
Gson gson = new Gson();
Testz test = new Testz();
test.setZ("zzzzzzzzzzzzzzzzz");
test.setCrap("rawrrr!!");
String urlParameters = gson.toJson(test);
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setUseCaches(false);
try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write(postData);
} catch (Exception e) {
e.printStackTrace();
}
InputStream inputStream = conn.getInputStream();
byte[] available = new byte[inputStream.available()];
inputStream.read(available);
System.out.println("response: " + new String(available));
}
catch(Exception e){
e.printStackTrace();
}
}
class Testz {
private String z = null;
public void setZ(String z){this.z = z;}
public String getZ(){return z;}
private String crap = null;
public void setCrap(String crap){this.crap = crap;}
public String getCrap(){return crap;}
}
答案 0 :(得分:3)
尝试添加@RequestBody
注释:
public String post(@RequestBody String string) {
它应该像魅力一样。