【发布时间】:2019-03-24 02:24:52
【问题描述】:
我的 api 端代码如下所示:
[HttpPost]
[Route("api/Login")]
public HttpResponseMessage ValidateLogin(UserModel user)
{
IEnumerable<string> customJsonInputString;
if (!Request.Headers.TryGetValues("Content-Type", out customJsonInputString))
return new HttpResponseMessage(HttpStatusCode.BadRequest);
var customJsonInputArray = customJsonInputString.ToArray();
var ProductsRequest =
Newtonsoft.Json.JsonConvert.DeserializeObject<UserModel>(customJsonInputArray[0]);
var result = _service.Fetch(
new UserModel
{
Username = user.Username,
Password = user.Password.GenerateHash()
}
);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
我正在尝试从同一解决方案中的单独项目中调用它:
[HttpPost]
public async Task<ActionResult> Login(UserLoginModel user)
{
UserModel data = new UserModel
{
Username = user.Username,
Password = user.Password
};
using (var client = new HttpClient())
{
var myContent = JsonConvert.SerializeObject(data);
var buffer = Encoding.UTF8.GetBytes(myContent);
var byteContent = new ByteArrayContent(buffer);
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var endpoint = "http://localhost:55042/api/Login";
var response = await client.PostAsync(endpoint, byteContent);
throw new NotImplementedException();
}
}
我认为问题出在Request.Headers.TryGetValues("Content-Type", out customJsonInputString)-s 第一个参数名称中,我已经在网上搜索过,但没有找到正确的描述/解释该参数名称应该是什么(嗯,我知道这是一个标头名称,但我也尝试使用“ContentType”找到它,结果相同:“400 bad request”),所以我的问题是:
- 我做错了什么?
- 我认为标题的名称是“ContentType”或“Content-Type”有错吗?
【问题讨论】:
-
不要在每个请求中处理
HttpClient! josefottosson.se/…
标签: c# asp.net asp.net-mvc asp.net-web-api