>> Terima mesej yang ditolak oleh CP: {}",json);JS"/> >> Terima mesej yang ditolak oleh CP: {}",json);JS">

Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan masalah SpringBoot @PostMapping menerima data penstriman daripada permintaan HTTP

Bagaimana untuk menyelesaikan masalah SpringBoot @PostMapping menerima data penstriman daripada permintaan HTTP

PHPz
PHPzke hadapan
2023-05-11 16:16:12965semak imbas

@PostMapping menerima data penstriman daripada permintaan HTTP

@PostMapping("/test")
public String pushMessage(@RequestBody byte[] data) throws Exception {
    String json = URLDecoder.decode(new String(data, DEFAULT_CHARSET), DEFAULT_CHARSET);
    log.info(">>> 接收CP推送的消息:{}", json);
 
    JSONObject jsonObject = JacksonUtils.jsonToBean(json, JSONObject.class);
    System.out.println(jsonObject.get("key"));
    return “success”
}

Permintaan pelanggan

try {
    //创建连接
    URL url = new URL(ADD_URL);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setRequestMethod("POST");
    connection.setUseCaches(false);
    connection.setInstanceFollowRedirects(true);
    //application/x-javascript 
    //text/xml->xml数据 
    //application/x-javascript->json对象 
    //application/x-www-form-urlencoded->表单数据 
    //application/json;charset=utf-8 -> json数据
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    connection.setRequestProperty("accept", "*/*");
    connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
 
    connection.connect();
 
    //POST请求
    DataOutputStream out = new DataOutputStream(connection.getOutputStream());
 
    JSONObject data = new JSONObject();
    data.element("key", "这是一条测试数据");
    
    out.writeBytes(data.toString());
    out.flush();
    out.close();
 
    //读取响应
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String lines;
    StringBuffer sb = new StringBuffer("");
    while ((lines = reader.readLine()) != null) {
        lines = new String(lines.getBytes(), "utf-8");
        sb.append(lines);
    }
    System.out.println(sb);
    reader.close();
    // 断开连接
    connection.disconnect();
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Mengenai analisis anotasi @PostMapping

Gesaan IDEA proses pembangunan seperti @RequestMapping(value=" /abc", kaedah = "RequestMethod.POST") digantikan dengan @PostMapping. Kini pelaksanaan @PostMapping.

@PostMapping ialah anotasi kompaun 4.3 memperkenalkan varian anotasi @RequestMapping untuk mewakili semantik kaedah beranotasi dengan lebih baik sebagai pintasan untuk @RequestMapping(method = RequestMethod.POST) .

Iaitu, ia boleh dipermudahkan kepada @PostMapping(value="/abc" ), yang terutamanya untuk memudahkan ingatan.

Banyak kaedah berikut adalah alias yang sepadan dengan teg @RequestMapping.

@RequestMapping(value = “”, path = “”, params = “”, headers = “”,consumes = “”, produces = “”)
rrree

Varian lain adalah seperti berikut:

@GetMapping, @PutMapping, @PatchMapping dan @DeleteMapping, serupa dengan @PostMapping

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah SpringBoot @PostMapping menerima data penstriman daripada permintaan HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam