【问题标题】:How to consume POST method in API RestFul using Xamarin如何使用 Xamarin 在 API RestFul 中使用 POST 方法
【发布时间】:2018-09-26 19:29:39
【问题描述】:

你想使用一个 API 来登录我的应用程序,使用该 API 的方法接收 4 个参数

  1. 网址基础
  2. 钥匙
  3. 用户名
  4. 密码

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

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

但是当我使用 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>

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

【问题讨论】:

  • 您的 POSTMAN 示例正在发送查询字符串上的所有数据,而不是正文
  • 如何发送链中的数据?我以为我是这样做的! @杰森
  • @BodegaPangal 创建一个HttpRequestMessage,将查询字符串作为URL 的一部分,并使用HttpClient.SendAsync
  • 您建议通过HttpRequestMessage发送参数,而不是占用PostAsync而不是SendAsync?你能推荐一个答案吗? @Nkosi

标签: json rest api xamarin xamarin.forms


【解决方案1】:

创建一个HttpRequestMessage,将查询字符串作为构造URL的一部分,并使用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 的方法。

【讨论】:

  • 在哪里连接我的 urlBase 和参数?按照您的回答,我必须使用“response.Content.ReadAsStringAsync()”,我是否必须反序列化对象?我没有得到结果......@Nkosi
  • 在您的示例中,您已经拥有指向客户端的 BaseAddress URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2021-03-11
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多