#json #сжатие #stackoverflow_api
Вместо JSON получаю по API набор цифр. Сказали это сжатые данные. Вот сам запрос: https://api.stackexchange.com/2.2/search?order=desc&sort=activity&intitle=corezoid&site=ru.stackoverflow.com По клику все работает нормально. Если использую postman, тоже. Мне сказали, что postman автоматически разархивирует сжатые данные. Данные, которые поступают мне в систему по API выглядят так: { "create_time": "2015.11.25 18:09:04", "change_time": "2015.11.25 18:09:04", "node_prev_id": "5655caeaf6c37670c306ddef", "status": "processed", "user_id": 5781, "data": { "__conveyor_api_return_description__": "Not valid http result json(<<31,139,8,0,0,0,0,0,4,0,171,86,202,44,73,205,45,86,178,138,142,213,81,202,72,44,142,207,205,47,74,85,178,74,75,204,41,78,213,81,42,44,205,47,73,140,207, 77,172,80,178,50,54,48,128,241,139,82,115,19,51,243,50,243,210,149,172,140,44,141,106,1,178,195,112,174,67,0,0,0>>)", "__conveyor_api_return_http_code__": 200, "__conveyor_api_return_type_tag__": "api_no_valid_json", "__conveyor_api_return_type_error__": "software" } }
Ответы
Ответ 1
Какой библиотекой/программой вы делаете запрос? Выкиньте ее и забудьте, раз в 2015м году она не умеет декодировать gzip. Вообще говоря, это ошибка на стороне stackoverflow api. По стандарту HTTP они не должны сжимать ответ без заголовка запроса Accept-Encoding: gzip - но сжимают. Можете попытаться сообщить им о баге. Или можете запросить новую фичу у разработчиков вашей библиотеки. Если же вам надо декодировать сообщение, не меняя клиентскую библиотеку и не дожидаясь исправлений от разработчиков - то такой "сторонний сервис" есть на любом линуксе: команда gzip -d сделает то, что вам надо. Под виндой можно поставить cygwin. Также для многих языков программирования есть библиотеки для декодирования gzip. К сожалению, вы не указали на чем пишете, поэтому не могу посоветовать вам конкретную.Ответ 2
Сервер посылает сжатые данные, только если сжатие поддерживается на стороне клиента. Например клиентом при запросе GET/POST в Request передается: Accept-Encoding: gzip, deflate, lzma, sdch тогда сервер может перед отправкой сжать данные и отправить. При этом в Response он сообщит какой метод сжатия использовался: Content-Encoding: gzip API StackOverflow, почему то игнорирует запрос пользователя и сжимает с помощью gzip все данные, так что проблема на стороне сервера, вам лишь остается каждый раз разархивировать данные.
ссылка http://blamag.ru/biznes/prokyratyra-manipyliryet-dokymentami-po-dely-rotterdam-advokat/
ОтветитьУдалить