私は、angularJS 2 httpで動作するpostメソッドを取得しようとしています。角度2 http postメソッドが失敗しました
次のように私の残りの呼び出しは次のとおりです。
saveCourse(Course: any) {
let url ='https://server/CoursesWebApi/api/courses/insert';
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers});
return this._http.post(url, { data: Course }, options)
.toPromise()
.then(res => res.json().data)
.catch((err: any) => {
console.log(err);
return Promise.reject(err);
});
}
文字列化コースのオブジェクトは、次のようになります。
"{" タイトル ":" テストタイトル」、 "AuthorId": "スコット・アレン"、 "カテゴリ": "ソフトウェア アーキテクチャ"、 "CourseLength": "2"、 "CourseId": "テストID"}」
Iは文字列化と非両方を試みました文字列化されたバージョン。私はクロームでデバッグするとき、私は両方のバージョンの次のエラーを取得する:
ステータス応答:URL 0:ヌル
私の理解では、0(ゼロ)の状態がそれを意味しますwebapiサーバーにそれを作ったことはありませんでした。私はCORSを有効にしており、サンプルのreactJSアプリケーションで同様のメソッドを使用しています。これはAxiosを使用して同じWebAPIを呼び出すことで動作します。私は不眠症のJSONツールをインストールし、次のようなJSON形式を使用してポストを実行し、それが働いた:
{ 「CourseId」:「スティーブ」、 「AuthorId」:「コーリーハウス」、 「タイトル」 : "テストタイトル"、 "CourseLength": "12時40分"、 "カテゴリー": "テストカテゴリ"}
私は私が間違っているのかわからないです。私のasp.net WEBAPIは次のようになります。
[HttpPost]
[Route("CoursesWebApi/api/courses/insert/")]
public IActionResult PostCourse([FromBody] Course course)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
_context.Course.Add(course);
try
{
_context.SaveChanges();
}
catch (DbUpdateException)
{
if (CourseExists(course.CourseId))
{
return new HttpStatusCodeResult(StatusCodes.Status409Conflict);
}
else
{
throw;
}
}
return Ok();
}
を最後に、私はシオマネキを使用するときに私は、Web APIに次のエラーを参照してください。
HTTP/1.1 400不正なリクエストのContent-Type:アプリケーション/ json;アクセス制御を許可するヘッダー:コンテンツタイプ、承諾、Xが要求したもの: X:アクセス許可を許可するヘッダー:サーバー:Kestrel X-Powered-By:ASP.NETアクセス制御許可元-File-Nameアクセス制御許可メソッド:GET、POST日付:Sun、01 Jan 2017 16:15:15 GMT Content-Length:37
{"":["サポートされていないコンテンツタイプ" "]}
投稿方法の多くの異なる設定を無駄にしようとしました。これを3日間作業しているので、どんな助けもありがとうございます。
EDIT 私は問題を解決できませんでした。私のWeb APIは、新しいasp.netコアとEF 7を使用していました.EF 6とASP.Net 4.5.2を使用して書き直しました。私は問題を引き起こしていた私のウェブAPIに欠けていた何かがあったと思う。あなたのPostCourse APIメソッドは以下[FromBody]
//public IActionResult PostCourse([FromBody] Course course)
になりますよう、本体にデータを送信する必要が
'_http.post(url、body、options)'を送信する前に 'var body = JSON.stringify(Course)'データをストライ化し、apiが意図したコンテンツタイプを処理できることを確認してください。 '[FromBody]'属性も削除してください。複雑なオブジェクトから単純な型を抽出するために使用されます – Nkosi