臨摹微笑
2023-03-03 15:24:29
我必須向 api 端點發出發布請求,但我收到錯誤狀態 500。name: "HttpErrorResponse"ok: falsestatus: 500statusText: "Internal Server Error"這是我的代碼:var selectedIds = ["31"];let sendData = new FormData();sendData.append('auth', this.dataService.REG_AUTH);sendData.append('identifier', identifier);sendData.append('selected[]', selectedIds); this.http.post<any>('APIENDPOINT', sendData).subscribe(data => { console.log(data);}, error => { console.log(error);});問題出在這一行:sendData.append('selected[]', selectedIds);我不知道如何將數組傳遞給 FormData。這是我們的 android 應用程序中的一個工作示例。我需要用 angular/typescript 語法轉換這個請求:@JvmSuppressWildcards@FormUrlEncoded@POST("APIENDPOINT")fun addData( @Field("auth") auth: String, @Field("identifier") identifier: String, @Field("selected[]") selected: ArrayList<String>): Call<ResponseBody>到目前為止我所知道的:似乎角度沒有序列化數據,所以我嘗試了一些硬編碼修復,但這些都不起作用:sendData.append('selected%5B%5D', '%2231%22'); sendData.append('selected%5B%5D', '31');sendData.append('selected%5B%5D', 31);sendData.append('selected%5B%5D', '%5B%2231%22%5D'); sendData.append('selected%5B%5D', selectedIds); sendData.append('selected%5B%5D', JSON.stringify(selectedIds));如果我使用selected而不是selected[],那么我不會收到任何錯誤,但顯然沒有數據更新,所以我很確定這是一個序列化/解析問題。
2 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
這statusCode 500是Internal Server Error,是服務器端的問題。因此,最好檢查它API是否可以收到您的請求。
FormData 的append()方法accept stringor blobtype 所以可以使用JSON.stringify()方法( formData.append('selectedIds', JSON.stringify(selectedIds));)。所以試試這個:
let selectedIds = ["31"];
let sendData = new FormData();
sendData.append('auth', this.dataService.REG_AUTH);
sendData.append('identifier', identifier);
sendData.append('selectedIds', JSON.stringify(selectedIds));
this.http.post<any>('APIENDPOINT', sendData).subscribe(data => {
console.log(data);
}, error => {
console.log(error);
});
添加回答
舉報
0/150
提交
取消