c# - 如何使用 HttpClient 发出简单的 post 请求
问题描述
说我有以下方法
[HttpPost()]
[Route("Api/IsUserValid/{username}/{password}")]
public string ValidateUser(string username, string password)
{
var user = _context.USERS.FirstOrDefault(x => x.U_NAME.Equals(username) && x.U_PASSWORD.Equals(password));
var jsonIzedUser = JsonConvert.SerializeObject(user);
return jsonIzedUser;
}
我想从 xamarin 项目发出一个帖子请求,下面是我发出帖子请求的代码
using (var httpClient = new HttpClient())
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("username","ASIM"),
new KeyValuePair<string, string>("password","xxxx")
});
var response = await httpClient.PostAsync("http://10.0.2.2:44342/Api/IsUserValid", content);
string result = await response.Content.ReadAsStringAsync();
}
最后我得到的错误
StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Sun, 15 Mar 2020 17:02:46 GMT
Server: Microsoft-IIS/10.0
Transfer-Encoding: chunked
X-Android-Received-Millis: 1584291766080
X-Android-Response-Source: NETWORK 404
X-Android-Selected-Protocol: http/1.1
X-Android-Sent-Millis: 1584291765810
X-Powered-By: ASP.NET
}
我在这里想念什么?
解决方案
在这里,您声明了用户名和密码的路由参数,这很危险!
[Route("Api/IsUserValid/{username}/{password}")]
public string ValidateUser(string username, string password)
至少你需要使用表单。因此,将代码更改为
[Route("Api/IsUserValid")]
public string ValidateUser([FromForm] string username, [FromForm] string password)
那么您从 xamarin 项目发布的代码应该可以在没有任何更改的情况下工作
推荐阅读
- mysql - Docker swarm 服务安全能力
- android - MediaMetadataRetriever 在 Android 11 中引发 RuntimeException
- scala - Arrays.asList(MyEnum.values) 返回 List[Array[T]] 而不是 List[T]
- php - 当我创建数据库时 MySQL 本地服务器不更新 PhpmyAdmin (mac)
- google-apps-script - 谷歌应用脚本 - 从文档中获取所有超链接
- visual-studio - 为什么在更新资源时必须重新启动 VS
- python - 添加一些代码后,pygame中的多人程序运行非常缓慢
- python - 有没有办法在不使用 distplot 的情况下在 plotly 中绘制高斯曲线(缩放到 y 轴而不对其进行归一化)?
- php - 用PHP替换目录中的文件
- python - 对输入数据变化不敏感的卷积网络