415 Неподдерживаемый тип носителя; Angular в ASP.Net Core API

У меня ASP.Net Core 2.1 API. Это выглядит так, как показано ниже.

[HttpPost]
public async Task<IActionResult> Post([FromBody]string email) {

}

При звонке от почтальона мне пришлось вызвать вышеуказанный API, как показано ниже, с заголовком, установленным как Content-Type = application/json

введите описание изображения здесь

При вызове того же API из Angular 8 приложения.

public send(email: string) {
   //other tried option #1 let obj = JSON.stringify(email);
   //other tried option #2 let obj = this.http.post(API.Url, {email});
   /other tried option #3 let obj = 

   return this.http.post(API.Url, email).pipe(
      retry(2)
   );
}

Это вызывает следующую ошибку: -

415 Неподдерживаемый тип носителя;

Если вызов обновлен заголовками: -

/* httpOptions = new HttpHeaders({
    'Content-Type': 'application/json'
}*/
public send(email: string) {
 return this.http.post(API.User, email , httpOptions).pipe(
  retry(2)
);}

Выдает ошибку как

{"": ["При анализе значения обнаружен непредвиденный символ: c. Путь '', строка 1, позиция 1."]}

Как мне вызвать вышеуказанный API, который принимает один параметр с именем email от angular?

Спасибо!


person Kgn-web    schedule 16.09.2019    source источник
comment
Сработал ли для вас какой-либо ответ? Если да, подумайте о том, чтобы принять / проголосовать за них. Спасибо!   -  person Nicholas K    schedule 16.09.2019
comment
@NicholasK, Нет, все та же проблема.   -  person Kgn-web    schedule 16.09.2019
comment
@NicholasK, если я пытался пройти {"email": email } , то 404   -  person Kgn-web    schedule 16.09.2019
comment
Сначала попробуйте это через API. Будет ли он вообще принимать этот json?   -  person Nicholas K    schedule 16.09.2019
comment
@NicholasK, он принимает только тогда, когда электронная почта передается как просто значение. См. Вложение (Почтальон) в сообщении   -  person Kgn-web    schedule 16.09.2019


Ответы (3)


Вам нужно сериализовать строку, чтобы сделать ее действительной json следующим образом:

// some example method.
public send(email: string) {
    const headers = new HttpHeaders({
        'Content-Type': 'application/json'
    }); 
    
    const json = JSON.stringify(email); 
    return this.http.post(API.User, json, {headers: headers}).pipe(
      retry(2)
    );
}
person Alexander    schedule 21.09.2019

Чтобы установить тип контента, вам нужно будет изменить свой код на

let headers = new Headers({ 'Content-Type': 'application/json' });
return this.http.post(API.Url, email,{headers:headers}).....
person jitender    schedule 16.09.2019

Вы должны отправить valid JSON, потому что просто отправка идентификатора электронной почты в теле сообщения не будет действительным JSON. Вы можете отправить как,

const details = {
 mailId: "your respective mail Id"
}

И попробуйте отправить эти данные в пост-звонке, например,

/* httpOptions = new HttpHeaders({
    'Content-Type': 'application/json'
}*/
public send(email: string) {
 return this.http.post(API.User, details, httpOptions).pipe(
  retry(2)
);}

Надеюсь, поможет! Ваше здоровье!

person Suhas Parameshwara    schedule 16.09.2019