- Регистрация
- 05.11.2016
- Сообщения
- 246
- Благодарностей
- 21
- Баллы
- 18
чатГПТ o4-mini-high очень долго мучил, но родилось решение...
ПРОБЛЕМА:
Как побороть когда ответ на get запрос в переменную попадает обрезанным?
Даже если в кубике get выбираешь что бы как файл сохраняло - в notepad открываешь файл и нем весь ответ, как положено.
Но этот же файл кубиком читаешь в переменную и он опять обрезается.
РЕШЕНИЕ:
в моем случае в ответет были нулевые байты которые надо удалять.
ответ getзапрос сохраняем как файл (в переменную попадет путь к файлу)

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

дальше через с# читаем из файла в переменную проекта (попутно ГПТ еще накинул проверку на 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: может где то на форуме и есть темы про этот затык, но я ничего не нашел: ни про обрезанный ответ, ни про нулевые байты.