我将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");
对于此特定示例;该网站应返回对还是错。
,但我想阅读响应变量。
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");
}
这给您带来了错误,因为您尝试访问在其他范围内声明的变量。如果将变量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");
请注意我在client.PostAsync()
之前添加的await
(您会在文档中找到有关异步/等待的更多信息)。
获取可以使用以下方法的响应内容的字符串表示:
await response.Content.ReadAsStringAsync();
这将将响应内容读为字符串。
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");
应该通过将变量的声明在范围之外移动,并更新呼叫内的值。