Не получать ответ json в SOAPUI, когда почтовый запрос успешно выполняется в положительном сценарии, но в отрицательном возвращается

Я новичок в SoapUI, я запустил в нем почтовый запрос для создания пользователя. Он вернул код успеха 201 (тот же, что и почтальон), который должен быть, но не показывает никаких данных на вкладке JSON в окне ответа. Где он должен отображать некоторые данные, поскольку запрос возвращает данные в формате JSON в Postman. Ответ, возвращенный в Postman:

{
"id": 107,
"creationTime": "2017-06-23T12:55:13.870+0000",
"lastUpdateTime": "2017-06-23T12:55:13.870+0000",
"username": "Testuserr",
"name": null,
"firstname": null,
"type": null,
"avatar": null,
"mobile": null,
"office": null,
"email": null,
"enabled": false,
"_links": {
    "self": {
        "href": "http://server/...../user/107"
    },
    "consultantUser": {
        "href": "http://server/...../user/107"
    },
    "roles": {
        "href": "http://server/...../user/107/roles"
    },
    "regularRole": {
        "href": "http://server/...../user/107/regularRole"
    },
    "userSkills": {
        "href": "http://server/...../user/107/userSkills"
    },
    "experiences": {
        "href": "http://server/...../user/107/experiences"
    },
    "educations": {
        "href": "http://server/...../user/107/educations"
    },
    "assignments": {
        "href": "http://server/...../user/107/assignments"
    },
    "certificats": {
        "href": "http://server/...../user/107/certificats"
    },
    "organisation": {
        "href": "http://server/...../user/107/organisation"
    },
    "sections": {
        "href": "http://server/...../user/107/sections"
    }
}
}

Где в SoapUI ничего не показывает.

введите здесь описание изображения

Но если я запускаю один и тот же запрос во второй раз, он показывает

{
   "cause":    {
      "cause":       {
         "cause": null,
         "message": "Duplicate entry 'TestName20181' for key UK_r43af9ap4edm43mmtq01oddj6'"
  },
  "message": "could not execute statement"
}

Это то же самое, что и Postman, и должно быть. Тогда в чем проблема с первого раза?

Помогите мне, если что, я пропустил во время исполнения... спасибо...


person Meet    schedule 23.06.2017    source источник
comment
Сообщение об ошибке понятно; вы отправляете повторяющееся значение TestName20181, которое должно быть уникальным в каждом запросе.   -  person Rao    schedule 23.06.2017
comment
Пожалуйста, прочтите это внимательно, я уже упоминал об этом. Ответ JSON приходит для дублирующейся записи, но с уникальной записью ответ JSON не приходит, где он должен быть.   -  person Meet    schedule 24.06.2017
comment
ХОРОШО. Думаю, было бы уместно проконсультироваться с вашей командой или поставщиком услуг.   -  person Rao    schedule 24.06.2017
comment
@ Рао. Я отправил ответ почтальона (первый JSON), который он должен вернуть в SOAPUI (готово! API!)   -  person Meet    schedule 26.06.2017
comment
Что вы видите в ответе RAW? Возможно, по какой-то причине SoapUI интерпретирует JSON как недопустимый. Или, может быть, Postman более терпим к типам контента - читается как: правильно ли принят тип контента, отправленный с запросом (для проверки в заголовках).   -  person Matthias dirickx    schedule 26.06.2017
comment
в Raw он возвращает «HTTP / 1.1 201 Proxy-Connection: Keep-Alive Connection: Keep-Alive Content-Length: 0 Via: 1.1 WIN-TMG-P0HEV7L Срок действия: 0 Дата: понедельник, 26 июня 2017 г., 04:10:51 Расположение по Гринвичу: server/...../user/110 Cache-Control: без кэша, без хранения, максимальный возраст = 0, обязательная повторная проверка Прагма: без кэша X-XSS-защита: 1; mode=block X-Frame-Options: DENY X-Content-Type-Options: nosniff Set-Cookie: JSESSIONID=D43100F75F0E47B3615F26C7EE038572;path=/user-api;HttpOnly '   -  person Meet    schedule 27.06.2017
comment
Я тоже под влиянием. Отрицательный тест -> HTTP/1.1 400 Content-Type: application/json Transfer-Encoding: chunked Дата: Пт, 31 августа 2018 г. 17:49:37 GMT Соединение: закрыть {имя: Имя не должно быть пустым!!!} Положительный Тест: HTTP/1.1 201 Местоположение: tsbsapp63-lv.internal.shutterfly.com:8080/v2-beta/api/projects/ Content-Length: 0 Date: Fri, 31 Aug 2018 17:52:12 GMT Но почтальон возвращает json идеально подходит для обоих случаев, что не так с пользовательским интерфейсом SOAP?   -  person Bhuvanesh Mani    schedule 31.08.2018


Ответы (1)


Я только что понял разницу: тип контента/тип носителя пуст для 201/200. Почтальон интеллектуально определяет тип контента как json и отображает.

Я только что подошел к столу разработчиков, чтобы подтвердить, что основная причина верна, и да,

Для 400 (отрицательные тесты): в классе обработчика исключений они возвращаются с типом носителя как

    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.APPLICATION_JSON);

    return new ResponseEntity(errors, responseHeaders, HttpStatus.BAD_REQUEST);

Но для 201/200 (положительные тесты): они не устанавливают contentType, его глобальную настройку или настройку по умолчанию в соответствии с инфраструктурой загрузки Spring.

Решение №1. Таким образом, разработчик должен явно установить contentType как JSON для пользовательского интерфейса SOAP, чтобы отобразить тело json, чтобы мы могли писать в нем тестовые сценарии, иначе вы увидите только нулевой ответ в SOAPUI, хотя он это 200/201.

Решение №2. В своем запросе пользовательского интерфейса SOAP добавьте параметр в "Заголовок" как Accept = application/json. Это решит вашу проблему без поддержки разработчиков.

Благодаря https://community.smartbear.com/t5/SoapUI-Pro/Change-the-reponse-from-content-type-text-html-to-text-json/td-p/ 39628

Скриншот

person Bhuvanesh Mani    schedule 31.08.2018