MVC4の新しいWebAPI機能を使用してメソッドを作成し、Azureで実行させました。このメソッドでは、ユーザー名とパスワードのプロパティで構成される単純なLoginModelオブジェクトを投稿する必要があります。私は成功したバイオリンを使用してこのメソッドを呼び出すことができますPostAsync、HttpClient&Jsonを使用してC#Metro UIクライアントからMVC4 WebAPIメソッドを呼び出す
Iという条件で、:メソッドはその後、JSON形式でオブジェクトを応答:-)はい、私は、これはさらにかつて私は、このスピードバンプを乗り越える確保を計画しますリクエストヘッダーに "Content-Type:application/json"を含めます。それは200で返し、私はフィドラーインスペクタに入るとうまくJSONレスポンスオブジェクトを表示することができます。
私はしかし、問題のC#/ XAMLを使用してWindows8でMetroUIアプリからこの同じメソッドを呼び出すを持っています。私はHttpClientとC#の新しいAsyncのコンセプトを使い始めました。たとえContent-Typeを "application/json"にしたいと思っても私の投稿の呼び出しをどのようにフォーマットしたとしても、Fiddlerは500エラーを返すその試みがContent-Type: "text/html"を使用していたことを示しています。私は、これが問題の根本であることを信じて:
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpContent content = new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}");
client.PostAsync("http://myapi.com/authentication", content).ContinueWith(result =>
{
var response = result.Result;
response.EnsureSuccessStatusCode();
});
:このメソッドに投稿し、JSONオブジェクトを取り戻すために
は私が考えられるすべてのものを試してみましたが、ここで私の最も最近の試みであります
これは、ここで
も失敗した別の試みであった "text/htmlの" に設定のContent-Typeと500エラーが発生:
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.PostAsync("http://myapi.com/authentication", new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}", Encoding.UTF8, "application/json"));
string statusCode = response.StatusCode.ToString();
誰でも正しい方向に向けることができますか?
ただNemesvのアドバイスに次のコードのおかげを試してみました:
HttpClient httpClient = new HttpClient();
HttpContent content = new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}");
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage response = await httpClient.PostAsync("http://webapi.com/authentication", content);
string statusCode = response.StatusCode.ToString();
response.EnsureSuccessStatusCode();
それは今私のリクエストヘッダに「アプリケーション/ JSONを」示しているが、まだWebセッションに「text/htmlのを」示しています
ありがとうNemesv。ちょうどそれを試みたが、まだ500エラーを渡すことができませんが、私は、 "アプリケーション/ json"を使用していることをヘッダーが示していることを気付きます - しかし、レコードのWebセッションは "text/html"スクリーンをつかむ。 – CodeAbundance
FYI:私の元の記事の一番下にある更新を参照してください。そして助けてくれてありがとう! – CodeAbundance
FYI:コンテンツヘッダにパラメータを設定する方法だと思います。私はコードに停止を入れ、StringContent値を設定した後にHttpContentオブジェクトを走査し、UsernameまたはPassword項目を見つけることができませんでした。これをWebAPIに投稿するためのより良い方法を知っていますか?まだ私の最後にそれを探して... – CodeAbundance