[英]Axios returns 500 error while request returns the response
我使用requests
package 從我的javascript
代碼中調用了 API。 但由於它已被棄用,我想用axios
替換它。
調用是這樣的:
request({
url: 'the_url',
method: 'POST',
encoding: null,
headers: {
'Content-Type': 'application/x-protobuf',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
},
body: requestBody,
}, callback);
requestBody
是Uint8Array
我用我需要發送的數據創建的。 以上工作正常,我得到了我需要的響應。 但是,當我像這樣將其重寫為axios
axios({
url: 'the_url',
method: 'POST',
encoding: null,
headers: {
'Content-Type': 'application/x-protobuf',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
},
data: requestBody,
}
).then( (res) => {
console.log(res);
}).catch( (error) => {
console.log(error);
})
服務器返回 500 錯誤。 它是完全相同的 URL 和相同的requestBody
變量。
編輯:當我檢查這兩種情況的實際請求對象時,看起來傳遞的requestBody
沒有完全相同的格式。
在request
的情況下,它是這樣的:
body: <Buffer 22 07... ... 396 more bytes>
但是在axios
這樣的情況下
data: ArrayBuffer {
[Uint8Contents]: <22 07 ... ... 346 more bytes>,
byteLength: 446
}
requestBody
的創建沒有任何變化。 在這兩種情況下,我都傳遞了完全相同的參數。 因此,它必須與axios
和requests
如何處理這些情況有關。
嘗試這個
let formData = new FormData()
formdata.append('reqBody', requestBody)
axios({
url: 'the_url',
method: 'POST',
encoding: null,
headers: {
'Content-Type': 'multipart/form-data',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
},
data: formdata,
}
).then( (res) => {
console.log(res);
}).catch( (error) => {
console.log(error);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.