我必须向 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
提交
取消