Axios 请求错误 - 消息序列化失败(无效编码)
Posted
技术标签:
【中文标题】Axios 请求错误 - 消息序列化失败(无效编码)【英文标题】:Axios Request Error - Message serialization failure (Invalid encoding) 【发布时间】:2022-01-09 13:32:02 【问题描述】:我收到以下错误:
Error: 13 INTERNAL: Request message serialization failure: invalid encoding
当我尝试运行此 axios
帖子时。有什么想法有什么问题吗? (我尝试了许多不同的版本,但错误不是那么具体)
使用 Firebase 函数中的 Axios 在 Node.js 上运行它。
const result = await axios.post('https://example_api_url.com',
data1: "data1",
data2: "data2,
,
headers:
'Authorization': `Bearer $API_KEY`,
'Content-Type': 'application/json'
);
【问题讨论】:
你有一个错字,应该是“data2” 【参考方案1】:这个错误似乎来自node.js grpc客户端library。
gRPC 是一种语言中立、平台中立、开源的远程过程调用 (RPC) 系统,最初由 Google 开发。启用 gRPC 的云 API 通常同时具有 REST 和 RPC 接口,因此启用 gRPC 的 API 客户端不仅可以使用 JSON over HTTP 与 REST 接口对话,还可以使用协议缓冲区和 gRPC over HTTP2 与 RPC 接口对话。您可以在documentation 中探索有关它的更多详细信息。
错误不应该来自使用 axios 库,因为它与 grpc 无关。这让我认为错误可能来自服务本身,而不是客户端,但很难确定。
由于是 grpc 客户端错误,很可能是使用某种无效数据调用 Google API。
同样,responseEncoding 不相关,因为错误消息提到的是 request,而不是 response。此外,该示例令人困惑,因为它包含同一个 responseEncoding 键的两个值。
【讨论】:
这最终是正确的。我发现来自 axios 的响应正确返回,但我没有从 firebase 函数服务正确传递该响应,因此出现错误。【参考方案2】:您可以在请求中添加编码和响应类型:
const result = await axios.post('https://example_api_url.com',
data1: "data1",
data2: "data2,
,
headers:
'Authorization': `Bearer $API_KEY`,
'Content-Type': 'application/json',
'responseEncoding' : 'json', // the type of data server will respond
'responseEncoding': 'utf-8' // used only for node.js
);
我附上了axios 文档,我建议仔细阅读其配置对象属性详细信息。
【讨论】:
添加了这些标题后,我仍然遇到同样的错误。 (在将 json 更改为 responseType 标头时也是如此)以上是关于Axios 请求错误 - 消息序列化失败(无效编码)的主要内容,如果未能解决你的问题,请参考以下文章
gpload 抛出异常“错误:用于编码“UTF8”的无效字节序列:0xe5b82e”
Axios 模拟适配器给出错误“错误:请求失败,状态码 404”