繁体   English   中英

Android HTTP 请求和响应

[英]Android HTTP request and response

当我登录 Xamarin.ZE84E30B9390CDB486DZDB6DB87 时,我想从 controller 发送 http 发布请求。 这是我的来自Login_Activity的 C# 代码

btn_login_001.Click += (sender, e) =>{
    User user = new User(edit_user_001.Text.ToString(), edit_password_001.Text.ToString());
    User_controller user_controller = new User_controller();
    Task<HttpResponseMessage> response = user_controller.check_pass_void(user);

    switch (response.Status){
       case 200:
           Console.WriteLine("Status OK");
           break;
       case 404:
           Console.WriteLine("Status Not Found");
           break;
       default:
           Console.WriteLine("Status Other");
           break;
   }
};

另外,这是我来自 controller 的代码

class User_controller {

  HttpClient client = new HttpClient();

  public async Task<HttpResponseMessage> check_pass_void(User user){

    try {
        Uri uri = new Uri("http://192.168.1.130:8080/noguiana/usuario/check_pass_void");

        // Convertir el usuario a JSON
        string user_json = JsonConvert.SerializeObject(user);
        StringContent content = new StringContent(user_json, Encoding.UTF8, "application/json");

        return await client.PostAsync(uri, content);

    } catch {
        return null;
    }

  } 
}

我的错误是Task<HttpResponseMessage>不是简单的HttpResponseMessage Xamarin 迫使我返回Task<HttpResponseMessage> ,现在我在使用 http 方法时遇到了麻烦,例如状态或对我的 JSON 响应进行反色化。

如果我投, Task<HttpResponseMessage> response = user_controller.check_pass_void(user); HttpResponseMessage response = (HttpResponseMessage)user_controller.check_pass_void(user); 它给了我这个按摩:

在此处输入图像描述

我能做些什么?

你需要学会正确使用 async/await

// mark the event handler as async
btn_login_001.Click += async (sender, e) =>{

   ...

   // check_pass_void() is async, so you need to await it
   HttpResponseMessage response = await user_controller.check_pass_void(user);

   ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM