недопустимые символы в строке 1 и столбце 1 в ответе xml в jmeter - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь проверить ответ XML от REST API, используя JMETER. Я использую утверждение схемы XML для проверки ответа с помощью xsd.

Я получаю следующую ошибку при утверждении схемы XML

Assertion error: true
Assertion failure: false
Assertion failure message: fatal: line=1 col=1 Content is not allowed in prolog.

Когда я вижу полученный ответ, я вижу, что в начале xml ответа добавлены недопустимые символы.

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

Я попытался изменить файл jmeter.properties и изменил следующие значения

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true

Пожалуйста, помогите мне понять, как удалить недопустимые символы в ответе и разрешить пройти проверку xsd.

1 Ответ

1 голос
/ 25 марта 2019

Эти символы обозначают Порядок следования байтов , поэтому вы можете использовать BOMInputStream из JSR223 PostProcessor , чтобы удалить их из ответа и заменить данные ответа на «продезинфицировать» XML.

  1. Добавьте JSR223 PostProcessor в качестве дочернего элемента HTTP-запроса , где вы хотите удалить эту спецификацию
  2. Поместите следующий код в область «Сценарий»:

    def is = new ByteArrayInputStream(prev.getResponseData())
    def bOMInputStream = new org.apache.commons.io.input.BOMInputStream(is)
    def bom = bOMInputStream.getBOM()
    def charsetName = bom == null ? 'UTF-8' : bom.getCharsetName()
    def reader = new InputStreamReader(new BufferedInputStream(bOMInputStream), charsetName)
    prev.setResponseData(org.apache.commons.io.IOUtils.toByteArray(reader, 'UTF-8'))
    
  3. Вот и все, ваше утверждение больше не должно быть ошибочным.

Дополнительная информация о скриптах Groovy в JMeter: Apache Groovy - зачем и как его использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...