如何使用Xamarin在API RestFul中使用POST方法

时间:2018-09-26 19:29:39

标签: json rest api xamarin xamarin.forms

您要使用API​​来登录我的应用程序,使用该API的方法会收到4个参数

  1. URL BASE
  2. KEY
  3. USERNAME
  4. 密码

主要问题是我没有收到正确的答案(状态200正常)

debug

我的类LoginResponse的结构很好,参数通过简单的形式传递,但是当我反序列化对象时,我得到下一个输出

但是当我使用POSTMAN传递相同的参数时,这会成功回答我。

postman

我真的不明白我在做什么错,可以将其错误地连接吗?我缺少代码吗?

 public async Task<LoginResponse> GetToken(
           string urlAPILogin,
           string KeyLogin,
           string Rut,
           string Password)
        {
            try
            {
                var client = new HttpClient();
                client.BaseAddress = new Uri(urlAPILogin);
                var response = await client.PostAsync("login", new StringContent(string.Format("/?k=" + KeyLogin + "&rut=" + Rut + "&password=" + Password) ,
                    Encoding.UTF8));
                var resultJSON = await response.Content.ReadAsStringAsync();
                var result = JsonConvert.DeserializeObject<LoginResponse>(
                    resultJSON);
                return result;

            }
            catch
            {
                return null;
            }
        }

我的资源字典包含

  <x:String x:Key="URLAPI">http://159.89.47.120</x:String>     
 <x:String:Key="KEY">afruo60kp5DXF7weN**********ObGS0TyIksfEppLPeGjl9hQHoja1LIfWp8YCTiA0GrZWodD2rPOe5DX8G9Yp3b</x:String>

出于明显的原因,我已经省略了所有密钥,对我有帮助吗?

1 个答案:

答案 0 :(得分:1)

使用查询字符串作为构造的URL的一部分创建一个HttpRequestMessage,并使用HttpClient.SendAsync

//...

var uri =  "login?k=" + KeyLogin + "&rut=" + Rut + "&password=" + Password;
var request = new HttpRequestMessage(HttpMethod.Post, uri);
var response = await client.SendAsync(request);

//...

现在,有更好的方法可以安全地构造URL,但这只是作为如何发送请求的简单示例。您可以轻松地在该站点上搜索其他构造URL的方法。