【问题标题】:Setting up a REST Client Application (Post) from a Web API从 Web API 设置 REST 客户端应用程序(发布)
【发布时间】:2016-10-10 10:56:56
【问题描述】:

我在尝试从 Web 服务检索 POST 操作的结果时遇到了一些问题。 我一直在使用 chrome 扩展来测试 API 服务,它们正在那里工作。但是我在代码中实现它时遇到了问题。

这是一个使用 chrome 扩展的例子:

我试图在代码中检索的是最后一部分,即 POST 操作生成的 json 数组,其中显示 accessToken。

但是,在下面我一直使用的代码中,我只能访问状态 (200 OK) 等。

这是我正在使用的代码的预览:

       {
        HttpClient client = new HttpClient();

        client.BaseAddress = new Uri(url.Text);

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(header.Text));

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url.Text);

        request.Content = new StringContent(body.Text, Encoding.UTF8, header.Text);

        client.SendAsync(request)
            .ContinueWith(responseTask =>
            {
                MessageBox.Show(responseTask.Result.Content.Headers.ToString());
            }
            );
    } 

Header.Text 正是“application/json”,body.Text 是具有各种属性的主体,例如用户名和密码(字符串格式),而 url.Text 包含调用 Web 服务的完整 URL。

我想知道我的代码有什么问题,以及如何获取包含 accessToken 的 json 数组

【问题讨论】:

    标签: c# asp.net json rest post


    【解决方案1】:

    在您的代码中,您需要使用ReadAsStringAsync 方法将您的HttpContent 对象转换为string/json。例如:

    client.SendAsync(request)
          .ContinueWith(responseTask =>
          {
              var jsonString = responseTask.Result.Content.ReadAsStringAsync().Result;
              MessageBox.Show(jsonString);
          });
    

    然后您可以根据需要转换jsonString

    【讨论】:

    • 我试过但有问题,声称await运算符只能在异步lambda表达式中使用
    • 成功了,感谢您的帮助,谢谢。这正是我想要的
    猜你喜欢
    • 2014-04-04
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2017-08-11
    • 2021-01-27
    • 2014-01-30
    相关资源
    最近更新 更多