Неожиданный тип содержимого в ответ на использование Java RestAssured - PullRequest
0 голосов
/ 30 июня 2018

Я установил Content-Type в RequestSpecBuilder как «ContentType.JSON». Но при выполнении запроса GET я получаю Content-Type как «application / xml» в ответ. Как мне получить ответ от JSON? Я попробовал следующие подходы: 1. Установите тип содержимого в объекте RequestSpecBuilder с помощью метода setContentType класса RequestSpecBuilder равным «ContentType.JSON» и передайте объект RequestSpecBuilder в методе спецификации RequestSpecification --- получил «application / xml» в ответе

  1. Установите тип содержимого в объекте RequestSpecification с помощью метода contentType в RequestSpecification и передайте ContentType.JSON в качестве параметра --- по-прежнему получайте «application / xml» в ответе

Примечание: URL веб-службы требует явного указания ".json", чтобы получить ответ json, иначе по умолчанию он возвращает ответ "xml". Однако я хотел установить тип содержимого с помощью RequestSpecBuilder. Например: для ответа Json: URL - http://ergast.com/api/f1/2017/circuits.json для ответа Xml: URL - http://ergast.com/api/f1/2017/circuits

Code:
@Test   
public void test_AddHeader() {      
        //Use of RequestSpecification
        String pathUrl = "http://ergast.com/api/f1/2017/circuits";
        RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();
        requestSpecBuilder = requestSpecBuilder.        
                setBaseUri(pathUrl).
                setContentType(ContentType.JSON).
                addQueryParam("limit", "10"); //added query param       
        RequestSpecification addRequestSpec = requestSpecBuilder.build();       

        RequestSpecification httpRequest = RestAssured.given().spec(addRequestSpec).contentType(ContentType.JSON);      
        Response httpResponse = httpRequest.get();
        System.out.println(httpResponse.getContentType()); //returns application/xml
        System.out.println(httpResponse.getStatusLine());   //returns HTTP/1.1 200 OK
        System.out.println(httpResponse.getBody().asString());//returns XML response
    }

1 Ответ

0 голосов
/ 01 июля 2018

Вы ожидаете JSON от ответа, но вы передаете setContentType своему RequestSpecBuilder. Это просто создаст полезную нагрузку POST в формате json. Это никак не влияет на ваш ответ.

Вместо этого вы можете создать ResponseBuilder и выполнить setContentType для JSON. Надеюсь, это поможет вам.

...