簡體   English   中英

Axios 在請求返回響應時返回 500 錯誤

[英]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);

requestBodyUint8Array我用我需要發送的數據創建的。 以上工作正常,我得到了我需要的響應。 但是,當我像這樣將其重寫為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的創建沒有任何變化。 在這兩種情況下,我都傳遞了完全相同的參數。 因此,它必須與axiosrequests如何處理這些情況有關。

嘗試這個

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM