Quo*_*ter 11 asp.net-mvc post dotnet-httpclient
我正试图POST从一个controller到另一个controller.两者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");
}
Run Code Online (Sandbox Code Playgroud)
在进程控制器中,我试图像这样接收它:
[HttpPost]
public HttpResponseMessage Product(string id, string type)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
但它永远达不到这一点controller.我总是得到一个"未找到状态代码".
那么如何通过2个简单的参数HttpClient()?
NMK*_*NMK 15
对于简单类型参数,请使用Get而不是Post.
using (var client = new HttpClient())
{
BaseAddress = new Uri(url);
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);
// New code:
var response = await client.GetAsync( string.format("api/products/id={0}&type={1}",param.Id.Value,param.Id.Type) );
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
return Request.CreateResponse(HttpStatusCode.OK, result);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "fail");
}
Run Code Online (Sandbox Code Playgroud)
在API方面,你可以这样做.
[HttpGet]
public HttpResponseMessage Product(string id, string type)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46677 次 |
| 最近记录: |