【问题标题】:How to read data from response body with HTTPclient Get method?如何使用 HTTPclient Get 方法从响应正文中读取数据?
【发布时间】:2019-10-24 22:22:50
【问题描述】:

我尝试过但不知道如何从 API 响应中读取数据。我能够获得 200 个状态代码,但我不知道如何获得实际数据。我正在尝试从 Withings API (http://developer.withings.com/oauth2/#tag/measure%2Fpaths%2Fhttps%3A~1~1wbsapi.withings.net~1measure%3Faction%3Dgetmeas%2Fget) 获取数据

我得到以下回复:

StatusCode:200,ReasonPhrase:'OK',版本:1.1,内容:System.Net.Http.StreamContent,标头:{ Access-Control-Allow-Origin:* Access-Control-Allow-Methods:GET、POST , 选项 Access-Control-Allow-Headers: Content-Type, * 日期: Mon, 10 Jun 2019 11:51:03 GMT Server: Apache Content-Length: 65 Content-Type: text/plain;字符集=UTF-8

以下是我的代码:

        string accessToken = "my_accessToken";
        HttpClient  client = new HttpClient();
        var url = "https://wbsapi.withings.net/measure?action=getmeas&meastype=1&category=1&startdate=737060&enddate=737179&offset=0";
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
        var response = await client.GetAsync(url);
        string content1 = await response.Content.ReadAsStringAsync();
        string content2 = response.Content.ReadAsStringAsync().Result;

我在上面添加了 withings API 的链接。有没有人指导如何从响应正文中获取数据。

【问题讨论】:

  • 内容长度为 65,这没什么好说的。您的 content1 应该包含返回的字符串..
  • @BugFinder on content1 我得到了以下消息 content1: {"status":2554,"error":"Not implemented: Invalid protocol TLSv1"}
  • 这就是响应 :) 正如我所说的那样简短。
  • @BugFinder 如果这是响应,那么我的数据在哪里?如果它的错误那么它是什么?我现在需要做什么?
  • 假设 API 错误与 TLS1 有关,您可能想在发出请求之前尝试此System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;。这应该会迫使您的代码使用更高版本的协议

标签: c# dotnet-httpclient withings


【解决方案1】:

问题现已解决。问题是 API 不支持 TLS1,当我将安全协议设置为 Tls12 时它可以工作。下面是我使用的代码。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多