我正在使用MailChimp API并返回错误响应,如下所示:
{
statusCode: 400,
data: '\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003L��\t�0\fF�UJ�N�\u0006NQ�\r%`��\'\n"��Ћ���nb��f\u0012=�&9����i\u001a\'f�\u0015�]�~j\u0019*\u0014$��W��\u0013Reg��_T1\u0013-��\u0000\u0000\u0000��\u0003\u0000�;�oc\u0000\u0000\u0000'
}
内容类型是JSON - 我假设这是unicode编码的。 Node / JS中是否有内置函数来解码?我只是找到了自制的实现 - 到目前为止还没有任何工作。
根据评论JSON.parse(err.data)
返回垃圾。是的,这是一个对象,而不是一个字符串。想法?
编辑。我已经尝试解码到utf8,gunzipping等,但仍然没有去。
答案 0 :(得分:0)
看起来像JSON但不是 - 键未按要求引用。如上所述,这是一个mailchimp错误消息。
这可能有助于解决问题:https://groups.google.com/forum/#!msg/mailchimp-api-discuss/S0JrzoEWY_0/94gTLsBjvtUJ - 或不是。
答案 1 :(得分:0)
解决方案是在请求配置中包含gzip: true
,例如:
const data = await http({
url: 'https://login.mailchimp.com/oauth2/token',
method: 'POST',
gzip: true,
form: {
grant_type: 'authorization_code',
client_id: clientId,
client_secret: clientSecret,
redirect_uri: redirectUri,
code,
},
});
这将正确解码返回到人类可读错误消息中的乱码。