如何从HTTP请求中读取/输出响应



我将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");

应该通过将变量的声明在范围之外移动,并更新呼叫内的值。

最新更新