7

Retrofit インスタンスを次のように構築しました。

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(server.url("/"))
            .addConverterFactory(MoshiConverterFactory.create(moshi))
            .build();

次に、次のようにMockWebServerインスタンスを呼び出しています。

server.enqueue(new MockResponse().setBody(jsonStr));

jsonStrはのように構築されます。

MyModel model = new MyModel("HOME", "AWAY", "ENTERTAIN", "NIGHT", "MUTE",
            "VOLUME", "SCENE 1", "SCENE 2", "SCENE 3");
JsonAdapter<MyModel> jsonAdapter = moshi.adapter(MyModel.class).toJson(model);

ただし、コードはこの時点でクラッシュします。

Response response = api.getString().execute();

例外は次のとおりです。

com.squareup.moshi.JsonDataException: 文字列が必要でしたが、パス $ で BEGIN_OBJECT でした

私は何を間違えましたか?

4

3 に答える 3

16

私は解決策を見つけました:私のAPIインターフェースは持つ必要がありました

@GET("/") Call<JsonObject> getString();

いいえ

@GET("/") Call<String> getString();

その理由は、プレーンな文字列ではなく、JSON 応答をモックしているためです。

于 2016-05-03T18:54:36.803 に答える