【发布时间】:2020-09-15 20:59:20
【问题描述】:
我必须向 api 端点发出 post 请求,但我收到错误状态 500。
name: "HttpErrorResponse"
ok: false
status: 500
statusText: "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>
到目前为止我所知道的:
似乎 angular 不会序列化数据,所以我尝试了一些硬编码修复,但这些都不起作用:
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[],则不会出错,但显然没有更新数据,所以我很确定这是一个序列化/解析问题。
【问题讨论】:
标签: javascript angular typescript http post