我正在尝试通过angular 6 post方法将对象数组发送到C#WebAPI。这里的问题是我必须通过带有身份验证cookie的'application / x-www-form-urlencoded'发送它,因为角度是通过旧版应用程序重定向的,后端服务是旧版应用程序的一部分。
下面是我的代码
User.service.ts
const postHTTPOption = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
}),
withCredentials: true
};
saveUser(user: User[]) : Observable<any> {
const user: User[] = [{'name': 'kr', 'role': 'admin'}];
const body = new HttpParams().append('user[]', JSON.stringify(user));
return this.http.post<any>('http://mydns/userapi/save', body.toString(), postHTTPOption).pipe(catchError(this.handleError.bind(this)));
}
handleError(errorResponse: HttpErrorResponse) {
if (errorResponse.error instanceof ErrorEvent) {
console.error('Client Side Error :', errorResponse.error.message);
} else {
console.error('Server Side Error :', errorResponse);
}
return throwError('There is a problem with the service.We are notified & working on it.Please try again later.');
}
user.model.ts
export class User{
name: string;
role: string;
}
注意:同样的模型也基于C#代码创建。
UserAPIController.cs
public User[] save([FromBody]User[] users)
{
Logger.Info(users.name);
return users;
}
但是这里的问题是我的用户对象为空。如果我尝试传递JSON.Stringify(User [])对象,它也会为我提供null值。
对我来说唯一有用的是如果我通过如下所示的httpparams发送单个用户对象
body = new HttpParams().set('name', 'rk').set('role', 'admin');
但是我的目的是通过邮寄发送用户对象数组。请让我知道我在这里想念的东西。