1

私は、かなり標準的な Web サービス API である Harvest 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()
  • addCredentialsとの URL がgetUrl一致していることを確認してください。
于 2014-02-10T09:47:21.743 に答える