Я пытаюсь выполнить GraphQL
запросов снова с конечной точкой SWAPI
https://api.graphcms.com/simple/v1/swapi
с использованием Retrofit
My Retrofit API напоминает
@Headers("Content-Type: application/json")
@POST("swapi")
Single<Response<String>> query(@Body final String query);
My Retrofit Services
public class StarWarsService extends BaseService implements StarWarsApi {
private static final String BASE_URL = "https://api.graphcms.com/simple/v1/";
private static final StarWarsApi INSTANCE = new StarWarsService();
/**
*
* @return
*/
public static StarWarsApi instance() {
return INSTANCE;
}
private final StarWarsApi service;
/**
*
*/
private StarWarsService() {
final Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).client(okHttpClient)
.addCallAdapterFactory(Java8CallAdapterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create()).build();
service = retrofit.create(StarWarsApi.class);
}
@Override
public Single<Response<String>> query(String query) {
return service.query(query);
}
}
Мой основной метод
private static final String QUERY_STAR_WARS_0001 = "{ \"query\": \"{Starship(name:\"Millennium Falcon\") { name, hyperdriveRating, pilots(orderBy: height_DESC) { name, height, homeworld {name} } }}\" }";
public static void main(String[] args) {
StarWarsService.instance().query(QUERY_STAR_WARS_0001).subscribe();
}
Я получаю следующие журналы
Sep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO: --> POST https://api.graphcms.com/simple/v1/swapi
Sep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO: Content-Type: application/json
Sep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO: Content-Length: 145
aSep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO:
Sep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO: { "query": "{Starship(name:"Millennium Falcon") { name, hyperdriveRating, pilots(orderBy: height_DESC) { name, height, homeworld {name} } }}" }
Sep 19, 2018 3:54:01 PM okhttp3.internal.platform.Platform log
INFO: --> END POST (145-byte body)
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: <-- 400 https://api.graphcms.com/simple/v1/swapi (325ms)
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: content-type: text/plain; charset=UTF-8
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: content-length: 291
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: date: Wed, 19 Sep 2018 14:54:39 GMT
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: server: akka-http/10.0.8
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: via: 1.1 cd9298825de9a9f64f66b3bc944bdd09.cloudfront.net (CloudFront), 1.1 3965285cac2a9323992ecbe26f94d453.cloudfront.net (CloudFront)
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: x-cache: Error from cloudfront
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: x-amz-cf-id: u17uzCW9lF5XI0o4_7hd5OatIqZshrKTlnX0G9iZWHb3CsJ8_Hobww==
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO:
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: The request content was malformed:
Unexpected character 'M' at input index 28 (line 1, position 29), expected '}':
{ "query": "{Starship(name:"Millennium Falcon") { name, hyperdriveRating, pilots(orderBy: height_DESC) { name, height, homeworld {name} } }}" }
^
Sep 19, 2018 3:54:02 PM okhttp3.internal.platform.Platform log
INFO: <-- END HTTP (291-byte body)
Когда я могу выполнить тот же запрос с помощью онлайн-браузера GraphQL, «браузер» OK?
Какую ошибку я допустил в своем коде / подходе?