>> CP가 푸시한 메시지 수신: {}",json);JS"/> >> CP가 푸시한 메시지 수신: {}",json);JS">

 >  기사  >  Java  >  HTTP 요청에서 스트리밍 데이터를 수신하는 SpringBoot @PostMapping 문제를 해결하는 방법

HTTP 요청에서 스트리밍 데이터를 수신하는 SpringBoot @PostMapping 문제를 해결하는 방법

PHPz
PHPz앞으로
2023-05-11 16:16:12966검색

@PostMapping은 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”
}

클라이언트 요청

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();
}

@PostMapping 주석 분석 정보

개발 프로세스 @RequestMapping(value="/abc", method = "RequestMethod.POST") 교체와 같은 IDEA 프롬프트 @ 사후 매핑. 이제 @PostMapping이 구현되었습니다.

@PostMapping은 복합 주석입니다. Spring 프레임워크 4.3에서는 @RequestMapping(method = RequestMethod.POST)에 대한 지름길로 주석이 달린 메서드의 의미를 더 잘 표현하기 위해 @RequestMapping 주석의 변형을 도입했습니다.

즉, 주로 메모리를 용이하게 하기 위해 @PostMapping(value="/abc" )로 단순화할 수 있습니다.

다음 메소드 중 다수는 @RequestMapping 태그에 해당하는 별칭입니다.

@RequestMapping(value = “”, path = “”, params = “”, headers = “”,consumes = “”, produces = “”)
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.POST)
public @interface PostMapping {

	/**
	 * RequestMapping 的别名,
	 */
	@AliasFor(annotation = RequestMapping.class)
	String name() default "";

	/**
	 *RequestMapping#value的别名, 默认为空字符串,一般需要自己填写
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] value() default {};

	/**
	 * RequestMapping#path的别名
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] path() default {};

	/**
	 * RequestMapping#params的别名
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] params() default {};

	/**
	 * RequestMapping#headers的别名
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] headers() default {};

	/**
	 * RequestMapping#consumes的别名
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] consumes() default {};

	/**
	 * RequestMapping#produces的别名
	 */
	@AliasFor(annotation = RequestMapping.class)
	String[] produces() default {};

}

다른 변형은 다음과 같습니다:

@GetMapping, @PutMapping, @PatchMapping 및 @DeleteMapping, @PostMapping 구현과 유사

위 내용은 HTTP 요청에서 스트리밍 데이터를 수신하는 SpringBoot @PostMapping 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제