Chargify API で単純な GET リクエストを認証しようとしています。資格情報をサービスに渡す方法の詳細が不足している可能性があります。
次のエラーが発生しました。
「基になる接続が閉じられました: 送信時に予期しないエラーが発生しました。」
「相手側がトランスポート ストリームを閉じたため、認証に失敗しました。」
私が使用しているコードは次のとおりです。
const string url = "https://subdomain.chargify.com/subscriptions.json";
var request = (HttpWebRequest)WebRequest.Create(url);
string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes("apikey:x"));
request.Headers[HttpRequestHeader.Authorization] = "Basic " + auth;
WebResponse response = request.GetResponse(); //THROW ERROR
using (Stream responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream, Encoding.UTF8);
return reader.ReadToEnd();
}
私は Chargify API ドキュメントの指示に従っています。ここで情報を参照できます。
https://docs.chargify.com/api-authentication
https://docs.chargify.com/api-introduction
Chrome拡張機能「Advanced REST Client」を使用して、上記のURLでGETリクエストを実行し、Chromeが従来のポップアップで資格情報を要求し、APIキーとパスワードとして「x」を入力すると、jsonで回答が得られますまさに私が期待しているもののために。APIキーが正しいことはわかっていますが、欠けているのは、リクエストを介してC#で情報を渡す方法です。
ドキュメントでcurlを使用すると、次の例が示されます。
curl -u api-key:x https://subdomain.chargify.com/customers.xml
curl のこの -u パラメータを C# でどのように変換する必要があるか、何か考えはありますか?
ありがとう!
EDIT コメントで示唆されているように、.NETラッパーを使用してみましたが、正確なエラーが発生しました。ここに私のコードサンプルがあります:
var _apiConnection = new ChargifyConnect(url, _userName, _password);
var productList = _apiConnection.GetProductList();