Dart基本身份验证不起作用(dart:io)(更新为工作代码)

时间:2014-02-07 02:54:21

标签: dart dart-io

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

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,这意味着某些请求失败了尊重。有什么事情看起来不对或错吗?我现在不知所措。

1 个答案:

答案 0 :(得分:1)

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

  • 在致电HttpClient.addCredentials
  • 之前致电HttpClient.getUrl
  • .then((HttpClientRequest))部分,请务必return req.close()
  • 确保addCredentialsgetUrl中的网址匹配。