Как сделать простой почтовый запрос с помощью HttpClient - PullRequest
0 голосов
/ 15 марта 2020

Скажем, у меня есть метод ниже

    [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
}

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 15 марта 2020

Здесь вы объявили параметры маршрута для имени пользователя и пароля, что опасно!

[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 должен работать без каких-либо изменений

...