Невозможно получить доступ к XML-ответу в сценарии предварительного запроса Postman - PullRequest
0 голосов
/ 01 октября 2018

У меня проблемы с извлечением xml-репозитория из сценария предварительного запроса Postman.Мой предварительный запрос выглядит следующим образом:

pm.sendRequest({
   url: "https://login.salesforce.com/services/Soap/u/40.0",
   method: 'POST',
   header: {
       'soapaction': "Required", 
       'Content-Type': 'text/xml',
   },
   body: {
       mode: 'raw',
       raw: "<se:Envelope xmlns:se=\"http://schemas.xmlsoap.org/soap/envelope/\"> \
                <se:Header/> \
                <se:Body> \
                    <login xmlns=\"urn:partner.soap.sforce.com\"> \
                        <username>user</username> \
                        <password>password</password> \
                    </login> \
                </se:Body> \
            </se:Envelope>"
   }
}, function (err, responseBody) {
    console.log(pm.request.body);
    var xmlTree = xml2Json(responseBody);
    console.log(xmlTree);
    console.log("sessionid: " + xmlTree['soapenv:Envelope']['soapenv:Body'].loginResponse.result.sessionId);
    //pm.environment.set("sys_id", response.json().result.sys_id);
    postman.setEnvironmentVariable("sessionid", xmlTree['soapenv:Envelope']['soapenv:Body'].loginResponse.result.sessionId);
});

Когда я смотрю на ответ в консоли Postman, я вижу правильный ответ, однако, когда я пытаюсь получить к нему доступ через "pm.request.body" или просто"responseBody" я получаю пустое / нулевое значение.

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

enter image description here

Есть мысли?

Кроме того, я могу сделать то же самое с URL-адресом, который отвечает полезной нагрузкой JSON, и, используя тот же метод, я могу извлечь ответ и работать со значениями.Кто-нибудь знает, есть ли что-то другое в XML-ответах?Или если они должны быть обработаны по-другому?

1 Ответ

0 голосов
/ 02 октября 2018

Оказалось, что это было очень простое решение, покопавшись еще немного, я обнаружил, что ответ возвращает объект «Поток», который необходимо десериализовать с помощью функции text ().

pm.sendRequest(loginRequest, function (err, response) {
    var xmlTree = xml2Json(response.text());
    var sessionid = xmlTree['soapenv:Envelope']['soapenv:Body'].loginResponse.result.sessionId;
    console.log("sessionid: " + sessionid);
    pm.environment.set("sessionid", sessionid);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...