web-dev-qa-db-ja.com

FormCollectionからのデータを使用して非同期HttpClientPOSTリクエストを作成する

Asp.Net MVC 4プロジェクトを実行しており、APIサービスへの内部リクエスト(プロキシなど)を探しています。

これは、私のコントローラーでのインデックスメソッドの外観です。 PostAsyncの部分で立ち往生しています。

[HttpPost]
public async Task<ActionResult> Index(FormCollection body){

   HttpClient httpClient  = new HttpClient();
   httpClient.BaseAddress = new Uri("http://myapi.com");

   // posts to http://myapi.com/users
   var response = await httpClient.PostAsync("users", body);

   if(response.isSuccessStatusCode) return Json(new {
        status = true,
        url    = response.Content.Url
   });
}

「application/x-form-urlencoded」「body」コンテンツをPostAsync POSTメソッドに渡したいのですが、「bodyはHttpContentタイプではありません」というエラーが表示されます。

キャストも変換もできません。今何?

ここで私が間違っていることを教えてください。

エリック

20
Erik5388

何をしようとしているのか完全にはわかりませんが、おそらくFormCollectionを辞書に変換し、FormUrlEncodedContentクラスを使用することがあなたが探しているものです。

例えば。:

var response = await httpClient.PostAsync("users",
                                          new FormUrlEncodedContent(
                                              body.
                                                  AllKeys.ToDictionary(
                                                      k => k, v => body[v])));
34
Peter Ritchie