Я пытаюсь отправить массив объектов в 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');
но я собираюсь отправить массив пользовательских объектов по почте. Пожалуйста, дайте мне знать, что мне здесь не хватает.