簡體   English   中英

無法從Spring RestController獲取POST數據

[英]Unable to get POST data from Spring RestController

我無法讓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;}
}

嘗試添加@RequestBody注釋:

public String post(@RequestBody String string) {

它應該像魅力一樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM