0

基本リクエストにこのヘッダーを追加しました:「Accept-encoding」、「gzip」

これにより、MalformedJsonException が発生し、JsonReader.setLenient(true) を使用するように促されました。

それをサポートするために、コードを次のように変更しました。

JsonReader jsonReader = new JsonReader(new StringReader(myStringReader with json string));
jsonReader.setLenient(true);
JsonParser parser = new JsonParser();
JsonObject object = parser.parse(jsonReader).getAsJsonObject();

私はまだ同じエラーが発生しています。

4

1 に答える 1

1

いくつかのこと -

  1. GZIP ヘッダーを設定している場合は、接続しているサーバーに、gzip された応答を解凍できることを伝えます。圧縮された応答を取得し、それを json として解析しようとしている可能性があります。最初に解凍する必要があります。

  2. を使用している場合はHttpUrlConnection、gzip ヘッダーが自動的に設定され、解凍されます。これは、アプリをプロキシし、アプリが作成する http リクエストを確認することで確認できます。

  3. 面白いことHttpUrlConnectionに、gzip ヘッダーを設定して解凍しますが、gzip ヘッダーを自分で設定すると、そうではありません。その後、それを解凍するためにあなたに依存します。

要するに、ヘッダーをまったく設定せずにHttpUrlConnectionすべてを行うことに依存するか、json コードの前にクラスを使用して応答を解凍する必要がありGZIPInputStreamます。詳細な説明については、この回答を参照してください。

.Net と互換性のある GZIPOutputStream を使用して文字列を圧縮および解凍するにはどうすればよいですか?

于 2015-05-17T22:06:20.953 に答える