ホームページ > Java > &#&チュートリアル > SpringBoot @PostMapping が HTTP リクエストからストリーミング データを受信する問題を解決する方法

SpringBoot @PostMapping が HTTP リクエストからストリーミング データを受信する問題を解決する方法

PHPz
リリース: 2023-05-11 16:16:12
転載
1022 人が閲覧しました

@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= などの開発プロセス IDEA プロンプト) /abc", method = "RequestMethod.POST") は @PostMapping に置き換えられます。次に @PostMapping の実装です。

@PostMapping は複合アノテーションです。Spring Framework 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 実装と同様)

以上がSpringBoot @PostMapping が HTTP リクエストからストリーミング データを受信する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート