обрезается тело ответа при GET/POST (нулевые байты, мать их)

nik-n

Client
Регистрация
05.11.2016
Сообщения
246
Благодарностей
21
Баллы
18
чатГПТ o4-mini-high очень долго мучил, но родилось решение...

ПРОБЛЕМА:
Как побороть когда ответ на get запрос в переменную попадает обрезанным?
Даже если в кубике get выбираешь что бы как файл сохраняло - в notepad открываешь файл и нем весь ответ, как положено.
Но этот же файл кубиком читаешь в переменную и он опять обрезается.

РЕШЕНИЕ:
в моем случае в ответет были нулевые байты которые надо удалять.

ответ getзапрос сохраняем как файл (в переменную попадет путь к файлу)
132763

дальше через с# читаем из файла в переменную проекта (попутно ГПТ еще накинул проверку на gzip, если не нужно, наверное можно убрать):

C#:
// путь к файлу из кубика Get-запроса
var path = project.Variables["get_res_file_url"].Value;
byte[] data = File.ReadAllBytes(path);
string text;

using (var ms = new MemoryStream(data))
{
    // если это gzip (магия 1F 8B)
    if (data.Length > 2 && data[0] == 0x1F && data[1] == 0x8B)
    {
        using (var gz = new GZipStream(ms, CompressionMode.Decompress))
        using (var reader = new StreamReader(gz, Encoding.UTF8))
            text = reader.ReadToEnd();
    }
    else
    {
        // обычный (не сжатый) файл
        using (var reader = new StreamReader(ms, Encoding.UTF8))
            text = reader.ReadToEnd();
    }
}

// убираем возможные '\0' и пишем в переменную
project.Variables["get_res"].Value = text.Replace("\0", "");
ИТОГ:
получаем в переменную все тело ответа

PS: может где то на форуме и есть темы про этот затык, но я ничего не нашел: ни про обрезанный ответ, ни про нулевые байты.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 578
Благодарностей
3 399
Баллы
113
Альтернативные запросы так же себя показывают?
 

nik-n

Client
Регистрация
05.11.2016
Сообщения
246
Благодарностей
21
Баллы
18

Кто просматривает тему: (Всего: 2, Пользователи: 1, Гости: 1)