2016-07-26 3 views
4

Я использую NodeJS и запрос на публикацию JSON и получение результата с данными в нем.Странные символы в теле после запроса ответа

Я установил этот запрос с помощью Postman, и я получаю данные JSON, которые полностью читаемы.

{ 
    "d": { 
    "__type": "Qvision.WoningenModule.Lib.aanbodcollection", 
    "testOutput": "", 
    "filter": null, 
    ... 
    etc. 
    } 
} 

Я создал фрагмент кода из Postman, чтобы я мог разместить его на своем сервере NodeJS с требуемым запросом.

Когда я пытаюсь запустить запрос на моем сервере узла закодированным телом.

 ��`I�%&/m�{J�J��t�`$ؐ@�������iG#)�*��eVe][email protected]�흼��{����{����;�N'���?\fdl��J�ɞ!���?~|?"~�G�����~�߿�^�=��'.������V�by�/��f�2?/&�,[N�ٴ*�|�R��F�y�~�nW��^��ϋ����-�eI�Vm���Z�������|�ѣ��"���b�}�h�|+4���~QWU����>������Ge6�ˆ�_��"����^o��bF�HO<��GM[gYK���E�\/���G[��UN^��eN��͊�Ң��A_?�n���Ƙ˼Z�������[email protected]��z�Qb=)��Zѯ��|�Fo+z�.~m.�z��墚�%��̫�uMs�y1�x�uA����>���Ų��/�fZ��h����"����Y����͐Ƣ@w���w����5+s;�����1��2�$��G��?������Ų�b�O�ˬ����9���~P-gy�L��|i/�����Q��$_��H�E��_�|Y���� <s8��/��8�����$��?~��C�J#{�3������o6ķ{�wSU4����YK���j�L�D�K�D��K�kan '$����uQ��ĺ�]�� ��J4Z������O������O?������O~�'��~��d?�N�{���G��{;����ݽ����*��}j���O�@�N�^=�ڊ>+�Dƍ�]%QM�wjy���������!�)� ��������g���?�&����R����i�|�6��N�U�v��o�> ���;����`��?xpp��"f��������;�v��U�sДy~V�����w�o�m~�:#�������x�Ӄ��ß������`g��A�$�����>�G�z����b���ߧ$�;�;�_�Mȼ�lv�`��po�vxNB{Y�WP?�����{{�j��t���g�˽����C�>1j��G   jE���?���Ux�/ww���b2�DI���ݧ��aK� k5���}n]���|�tgw��:�;;���J���S�O��>�O��/���\x�=��?��/�>B����O���;��:ݻ�G��9�%�v<�h䱶^:��{|�KF����{�����o�4����.�M�<�=��w�����I����+M��>i�{�ݽ��=�|oߨb3ޟ�.����v�����j��n�z|x��*1u?�~JF����à������c&}mФK�س���f���t���&ELF���e��>�Y��?�.fUճ�;��oh����oЪ�?��#��si�)Z����9������~��/>������Ҍ��}���KR�Cf����=��� 6�$3������Y5�~����vw�Hż�lvHf|�������Rh�s�T��gnj����ݿo{�Y1�ԉ�o���{�`g_�kv̸��>y��>4���ϒ�;}@����l�Ϛ���O*l�S#�1ey����uЌ�����'�ۆ��o�ʤu�"җ��O~�,�{�����[Xo1��FQ����t���F�sk���h�|��d�������=��٦���>�)F��=ܷif3���.)�J)_�~VͶ��>E��ΰ�9�Y�����`��N��f��{� �ώ��z�Oi����턺���O?}`����1�~���;v6a=�̶�)-���6��7g�7tI���}�T���Mf������*ofy��ZbY��.�B��M���g�l� 3�?ͷ;�"���n�@_|sv{��� ���ݦo����ߟ�@�m\"�w����o?=��,��s;�v��7��Y�r�!%���c��Y���[R7����h�ڭX���)�}������ޣ���~�p�ٱ�~�(ͱc��d�g��������[1��ٱ�~�H�K��h��NHT��u��5��w������e���ɢ�LZt�)=s~��C^�v������Ɓ!K� �����F�x�c՟W-�I���U4�5Ɠl88�ױ�;����ᅬx������5I�R84%�J�s��|�<���ʚS��ӇdQ��O����W���g�GR{�~�=���r�ׇ�0����UL��bv��������&��>%"�^v��)��},�h�?+v��n����33����q�?Z8~H|���gɊ{}�k���C#�?kF������c�����^6�W��9,2�]������0�5���X.�D�0��&;�SD(�������ڈ��� 5F�����1�?��<�j��#���Ů�QψS�m����|�%������/�_�<~�����9�e^^��nה��� 
�ϕ)���ރO�?��G�~�v�v�/3���i���������g�WZP}p���p��g�?ʑ����DT����l�#���{fWz��1�^�~�{��X����r��] 
�vMw�ώ)�����?�p`2 0�?K�������m�?k��둖�|�gz�i���σ�| ���J����/YF��R�G?k��}b���#$߿1C~g��C�C������/� ��%K�9 

Нравится это. В Postman данные в порядке, но в узле это не так. Как это может быть? Там нет ничего плохого в моей просьбе, насколько я знаю:

var request = require("request"); 

var options = { method: 'POST', 
    url: '****', 
    headers: 
    { 'postman-token': '****', 
    cookie: '****', 
    'accept-language': 'nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4', 
    'accept-encoding': 'gzip, deflate, br', 
    referer: '****', 
    'content-type': 'application/json; charset=UTF-8', 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 
    'x-requested-with': 'XMLHttpRequest', 
    origin: '****', 
    accept: 'application/json, text/javascript, */*; q=0.01', 
    'cache-control': 'no-cache', 
    pragma: 'no-cache', 
    'content-length': '1035', 
    connection: 'keep-alive', 
    host: '****' }, 
    body: '{"****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************}', 
    //encoding: null 
    }; 

request(options, function (error, response, body) { 
    if (error) throw new Error(error); 
    console.log(body); 
}); 

console.log приведены данные, показанные на 2-й фрагмент кода.

Может кто-нибудь объяснить мне, что происходит, и почему это работает в почтальоне, но не в узле?

ответ

9

Скорее всего, данные, которые вы видите, сжимаются (с помощью gzip), так как вы отправляете заголовок, в котором говорится, что вы готовы принять такой ответ. Установите gzip: true в своих request() опциях и request должен автоматически распаковать body, переданный вашему обратному вызову.

Или просто удалить 'accept-encoding': 'gzip, deflate, br' строку в headers объекта не запрашивать сжатие GZIP.

+0

Спасибо, удалив обработку accept-encoding! – Jelmer

+1

Ты спас меня от вытягивания волос. – Ali