【发布时间】:2014-10-16 11:46:52
【问题描述】:
我正在尝试从一个controller 到另一个controller 执行POST。两个controller 都来自不同的项目。一个项目用于模拟表示层(我将这里称为测试项目)。
从测试项目中,我尝试将 2 个简单的 string 参数传递给另一个我将调用该过程的控制器。
var values = new List<KeyValuePair<string, string>>();
values.Add(new KeyValuePair<string, string>("id", param.Id.Value));
values.Add(new KeyValuePair<string, string>("type", param.Type.Value));
var content = new FormUrlEncodedContent(values);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string token = param.token.Value;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = client.PostAsync("/api/Process/Product", content).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
return Request.CreateResponse(HttpStatusCode.OK, result);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "fail");
}
在进程控制器中,我试图像这样接收它:
[HttpPost]
public HttpResponseMessage Product(string id, string type)
{
return null;
}
但它永远不会到达这个controller。我总是收到“未找到状态码”。
那么如何使用HttpClient() 传递两个简单的参数?
【问题讨论】:
-
为什么不使用 GetAsync?意味着将您的动词从 Post 更改为 Get。
-
因为我只能通过
GET传递1个参数。虽然我尝试了你的解决方案,但没有奏效。进程中没有出现controller
标签: asp.net-mvc post dotnet-httpclient