Android HTTP 请求和响应
Android HTTP request and response
我想在登录 Xamarin.Android 时从控制器发送一个 http post 请求。这是我来自 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;
}
};
此外,这是我来自控制器的代码
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 使我转向 return Task<HttpResponseMessage>
,现在我在使用 status 或
取消我的 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);
...
我想在登录 Xamarin.Android 时从控制器发送一个 http post 请求。这是我来自 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;
}
};
此外,这是我来自控制器的代码
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 使我转向 return Task<HttpResponseMessage>
,现在我在使用 status 或
取消我的 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);
...