[解決済み】HttpClientのPostAsyncの第2パラメータにHttpContentを設定するにはどうしたらいいですか?
質問
public static async Task<string> GetData(string url, string data)
{
UriBuilder fullUri = new UriBuilder(url);
if (!string.IsNullOrEmpty(data))
fullUri.Query = data;
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync(new Uri(url), /*expects HttpContent*/);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
は
PostAsync
は、もう1つのパラメータを受け取ります。
HttpContent
.
を設定するにはどうすればよいのでしょうか?
HttpContent
? Windows Phone 8 で動作するドキュメントがどこにもありません。
もし私が
GetAsync
しかし、key="bla", something="yay" のコンテンツでPOSTする必要があります。
//編集
回答、本当にありがとうございました・・・。これはうまくいくのですが、まだここにいくつかの不合格があります。
public static async Task<string> GetData(string url, string data)
{
data = "test=something";
HttpClient client = new HttpClient();
StringContent queryString = new StringContent(data);
HttpResponseMessage response = await client.PostAsync(new Uri(url), queryString );
//response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
データ "test=something" は、ポストデータ "test" として api 側で拾うと思ったのですが、どうやらそうではなさそうですね。また、オブジェクトや配列全体をpost dataで投稿する必要があるかもしれないので、その場合はjsonが最適だと考えています。どのようにポストデータを取得するかについて、何か考えがありますか?
おそらく、次のようなものでしょう。
class SomeSubData
{
public string line1 { get; set; }
public string line2 { get; set; }
}
class PostData
{
public string test { get; set; }
public SomeSubData lines { get; set; }
}
PostData data = new PostData {
test = "something",
lines = new SomeSubData {
line1 = "a line",
line2 = "a second line"
}
}
StringContent queryString = new StringContent(data); // But obviously that won't work
解決方法は?
の回答でいくつか答えています。 HttpContentの使い方がわかりません。 と同様に、この ブログ記事 .
まとめると、直接インスタンスとして
HttpContent
であるため
抽象クラス
. 必要性に応じて、このクラスから派生したクラスを使用する必要があります。ほとんどの場合
StringContent
これは、コンストラクタでレスポンスの文字列、エンコーディング、 メディアタイプを設定することができます。参照してください。
http://msdn.microsoft.com/en-us/library/system.net.http.stringcontent.aspx
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】C#で四捨五入する方法
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み] HttpClientリクエストのContent-Typeヘッダーはどのように設定するのですか?
-
[解決済み】同期接続にHttpClientを使用する理由
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] 関数を終了するには?
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】Web APIからHttpClientでJsonObjectをPOSTする。
-
[解決済み] HttpClientでREST APIに空のボディを投稿する