使用FormCollection中的数据创建异步HttpClient发布请求

时间:2012-10-23 18:31:21

标签: c# asp.net-mvc-4 formcollection dotnet-httpclient

我正在做一个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类型”。

我无法施放或转换。现在怎么办?

让我知道我在这里做错了什么。

埃里克

1 个答案:

答案 0 :(得分:34)

我不完全确定你要做什么,但可能将FormCollection转换为字典并使用FormUrlEncodedContent类就是你要找的。

e.g:

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