我正在使用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
,这意味着某些请求失败了尊重。有什么事情看起来不对或错吗?我现在不知所措。
答案 0 :(得分:1)
总结原始代码段中的更改:
HttpClient.addCredentials
HttpClient.getUrl
.then((HttpClientRequest))
部分,请务必return req.close()
addCredentials
和getUrl
中的网址匹配。