Angular 6-使用HTTPParams使用对象数组的Post方法

时间:2018-08-29 06:08:28

标签: javascript angular typescript http-post angular6

我正在尝试通过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');

但是我的目的是通过邮寄发送用户对象数组。请让我知道我在这里想念的东西。

0 个答案:

没有答案