我将HTTP请求发送到网页以插入或检索数据。
这是我的代码:
string json = JsonConvert.SerializeObject(user);
using (var client = new HttpClient())
{
var response = client.PostAsync(
"url",
new StringContent(json, Encoding.UTF8, "application/json"));
}
DisplayAlert("Alert", json, "OK");
DisplayAlert("test", response, "test");
对于此特定示例;网站应返回true或false。
但是我想读取响应变量。
DisplayAlert("test", response, "test");
显示错误。这是因为我试图读取超出范围的响应。
我的问题是如何读取页面上的响应变量或输出响应变量?
修改
{
LoginModel user = new LoginModel();
{
user.email = email.Text;
user.password = password.Text;
};
string json = JsonConvert.SerializeObject(user);
using (var client = new HttpClient())
{
}
var response = client.PostAsync(
"https://scs.agsigns.co.uk/tasks/photoapi/login-photoapi/login-check.php",
new StringContent(json, Encoding.UTF8, "application/json"));
DisplayAlert("Alert", json, "OK");
DisplayAlert("test", response, "test");
}
答案 0 :(得分:1)
这会给您一个错误,因为您尝试访问在另一个作用域内声明的变量。如果将变量response
移到“方法范围”内,该错误将消失:
string json = JsonConvert.SerializeObject(user);
HttpResponseMessage response;
using (var client = new HttpClient())
{
response = await client.PostAsync(
"url",
new StringContent(json, Encoding.UTF8, "application/json"));
}
DisplayAlert("Alert", json, "OK");
DisplayAlert("test", await response.Content.ReadAsStringAsync(), "test");
请注意我在await
之前添加的client.PostAsync()
(您可以在docs中找到有关异步/等待的更多信息)。
要获取响应内容的字符串表示形式,可以使用以下方法:
await response.Content.ReadAsStringAsync();
这将以字符串形式读取响应内容。
答案 1 :(得分:0)
string json = JsonConvert.SerializeObject(user);
HttpResponseMessage response;
using (var client = new HttpClient())
{
response = client.PostAsync(
"url",
new StringContent(json, Encoding.UTF8, "application/json").Result);
}
var body = response.Content.ReadAsStringAsync().Result;
DisplayAlert("Alert", json, "OK");
DisplayAlert("test", body, "test");
应该起作用,方法是将变量的声明移到范围之外,并在调用内更新值。