Я столкнулся с довольно запутанной проблемой с последних двух дней.Я работаю над системой управления документами, которая использует API, который извлекает данные из SOLR.Объем данных составляет около 15 МБ, и в них заносятся записи более 4000+ документов.У API есть ответ в этом формате -
{
"documents": [
{
id: 123,
some_field: "abcd",
some_other_field: "abcdef"
},
{
id: 124,
some_field: "abcd1",
some_other_field: "abcdef1"
}
]
}
Все отлично работает в браузере.Если я попадаю на конечную точку в браузере Chrome или Firefox, это дает мне правильный вывод, и я могу видеть вывод JSON.
Тем не менее, если я попытаюсь использовать одну и ту же конечную точку API с помощью кода Java или JS - код ответа - 200, но на выходе в консоли (Terminal или Eclipse) отображаются символы Unicode, такие как \u0089 \u0078 U+0080
, - все выходные данныепроисходит таким образом, и, поскольку API получает более 4000 записей, консоль вроде как заполняется всеми этими символами Юникода.
Единственное различие, которое я вижу между запросами, сделанными из браузера иКод в том, что в браузере я вижу Content-Encoding : gzip
, хотя я не могу найти этот заголовок из кода, который я написал.Например, в коде JS, через Chakram
framework, я могу проверить
expect(response).to.be.encoded.with.gzip
, упомянутый здесь .Тем не менее, это возвращает ошибку, указывающую expected undefined to match gzip
Что мне здесь не хватает?Связано ли это с кодированием / декодированием или с чем-то совершенно другим?
Редактировать 1: Заголовки ответа, как показано на вкладке Network
в Chrome:
cache-control: max-age=0, private, must-revalidate, max-age=315360000
content-encoding: gzip
content-type: application/json; charset=utf-8
date: Tue, 22 May 2018 06:07:26 GMT
etag: "a07eb7c1eef4ab97699afc8d61fb9c5d"
expires: Fri, 19 May 2028 06:07:26 GMT
p3p: CP="NON CUR OTPi OUR NOR UNI"
server: Apache
Set-Cookie : some_cookie
status: 200 OK
strict-transport-security:
transfer-encoding: chunked
vary: Accept-Encoding
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-request-id: abceefr4-1234-acds-100b-d2bef2413r47
x-runtime: 3.213943
x-ua-compatible: chrome=1
x-xss-protection: 1; mode=block
Заголовки запроса, как видно изNetwork
вкладка Chrome
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: some_cookie
Host: abcd.bcd.com
IV_USER: demouser123
IV_USER_L: demouser123
MAIL: demouser@f.com
PERSON_ID: 123
Referer: http://abcd.bcd.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
X-CSRF-TOKEN: some_csrf_token
Редактировать 2: тесты, которые я использую
describe('Hits required API',()=>{
before(()=>{
return chakram.wait(api_response = chakram.get(url,options));
});
it('displayes response',()=>{
return api_response.then((t_resp)=>{
console.log(JSON.stringify(t_resp));
expect(t_resp).to.have.header('Content-Encoding','gzip');
});
});