1

我正在使用 Harvest API,这是一个非常标准的 Web 服务 API,我的 curl 请求运行良好,而我的 Dart HttpClient 请求却没有。这是我的 curl 请求(当然是伪装的敏感信息):

curl -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -u "address@domain.com:password" \
  https://my_domain.harvestapp.com/account/who_am_i

更新---以下代码现在可以工作:

HttpClient client = new HttpClient();
client.addCredentials(
  Uri.parse('https://my_domain.harvestapp.com/account/who_am_i'),
  'realm',
  new HttpClientBasicCredentials('address@domain.com', 'password')
);
client.getUrl(Uri.parse('https://my_domain.harvestapp.com/account/who_am_i'))
  .then((HttpClientRequest req) {
    req.headers
      ..add(HttpHeaders.ACCEPT, 'application/json')
      ..add(HttpHeaders.CONTENT_TYPE, 'application/json');

    return req.close();
  })
  .then((HttpClientResponse res) {
    print(res);
    client.close();
  });
}

显然,我想做的不仅仅是print响应,但无论如何,res对象最终都是null,这意味着请求在某些方面失败了。有什么看起来不对劲或不对劲吗?我现在不知所措。

4

1 回答 1

1

总结原始代码片段的更改:

  • 打电话HttpClient.addCredentials前打电话HttpClient.getUrl
  • .then((HttpClientRequest))部分中,确保return req.close()
  • 确保其中的 URLaddCredentials匹配getUrl
于 2014-02-10T09:47:21.743 回答