web-dev-qa-db-ja.com

POST JSON Requestの文字エンコード

POST JSONリクエストをアプリケーションに送信しています。

POST /CharSetTest/Test HTTP/1.1
Host: localhost:8090
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 1637b92b-5896-4765-63c5-d04ad73ea9f1

{
  "SampleRequest": {
    "FullName": "関連当"
  }
}

私のCXF JAXRSコンシューマーは以下のように定義されています。

@POST
@Produces("application/json; charset=UTF-8")
@Consumes("application/json; charset=UTF-8")
public Response testCharSet(@Encoded String jsonBody);

ただし、POSTリクエストとして送信した日本語文字(関連当)はエンコードされず、一部のジャンク文字 "é¢é£å½äºè"になります。

SoapUIを使用すると、「?????」文字。

このジャンクキャラクターは、リクエストを送信したクライアントごとに異なります。 POSTリクエストをエンコードするにはどうすればよいですか?

10
Elite209

コンテンツタイプを次のように設定します。

"application/json;charset=UTF-8" 

使用しているアプリケーションで投稿リクエストを送信するとき。そのアプリケーションのURLのヘッダーに「content-type」があります。

10
Rajat

ここでの答えはどれも役に立たなかった。

Content-typeはすでに「application/json; charset = UTF-8」に設定されていますが、ヘッダーのaccept-encoding設定がエラーの原因でした:

ヘッダーの下のaccept-encoding設定を無効にします。

enter image description here

上記の最後の行を無効にすると、すべてがうまくいきました!それが誰かを助けることを願っています。

3
Matt

これを試して

@RequestMapping(value = "/play", method = RequestMethod.POST, produces={"application/json; charset=UTF-8"})

セットする produces={"application/json; charset=UTF-8"}上記のように、あなたの@RequestMapping

0