Angular 6 - метод Post с массивом объектов, использующий HTTPParams - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь отправить массив объектов в C # WebAPI с помощью углового метода 6 post. Подвох в том, что мне пришлось отправить его через application / x-www-form-urlencoded с файлом cookie auth, потому что angular перенаправляется через устаревшее приложение, а фоновые сервисы являются частью устаревшего приложения.

ниже мой код

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 []), он также дает мне нулевое значение.

У меня работает только одно, если я отправляю однопользовательский объект через httpparams, как показано ниже

body = new HttpParams().set('name', 'rk').set('role', 'admin');

но я собираюсь отправить массив пользовательских объектов по почте. Пожалуйста, дайте мне знать, что мне здесь не хватает.

...