.NET 用の Hammock C# ライブラリを使用して Recurly REST API を呼び出そうとしています。API 呼び出しには、HttpRequest の Authorization ヘッダーが必要です。認証方式は、ヘッダーのユーザー名部分に Base64 でエンコードされた API キーを使用する基本認証です。オブジェクトの Username プロパティにエンコードされたキーを使用して新しい Hammock BasicAuthCredentials オブジェクトを作成し、そのオブジェクトを RestClient または RestRequest オブジェクトの Credentials プロパティに割り当てることができると考えました。ただし、これは送信 HttpRequest で Authorization ヘッダーを生成しないようです。
これらのオブジェクトの 1 つで AddHeader メソッドを使用して Authorization ヘッダーを手動で追加すると、API 呼び出しは成功します。BasicAuthCredentials オブジェクトで Credentials プロパティを使用すると、Recurly から Access Denied エラーが発生します。
これはかなり基本的なことのように思えるので、何か間違ったことをしていることはわかっています。では、Hammock では、RestClient または RestRequest オブジェクトの Credentials プロパティは、Http リクエストで Authorization ヘッダーを作成することになっているのでしょうか?
ハンモックのスーパーユーザーからの助けに感謝します!
失敗するコード:
class Program
{
public static void Main(string[] args)
{
string encodedAPIKey = Convert.ToBase64String(Encoding.UTF8.GetBytes("APIKeyHere"));
BasicAuthCredentials credentials = new BasicAuthCredentials
{
Username = encodedAPIKey
};
RestClient client = new RestClient
{
Authority = "https://api.recurly.com",
VersionPath = "v2"
};
client.AddHeader("Accept", "application/xml");
RestRequest request = new RestRequest
{
Credentials = credentials,
Path = "plans"
};
RestResponse response = client.Request(request);
Console.WriteLine(response.Content);
Console.ReadLine();
}
}
成功するコード:
class Program
{
public static void Main(string[] args)
{
string encodedAPIKey = Convert.ToBase64String(Encoding.UTF8.GetBytes("APIKeyHere"));
RestClient client = new RestClient
{
Authority = "https://api.recurly.com",
VersionPath = "v2"
};
client.AddHeader("Accept", "application/xml");
client.AddHeader("Authorization", "Basic " + encodedAPIKey);
RestRequest request = new RestRequest
{
Path = "plans"
};
RestResponse response = client.Request(request);
Console.WriteLine(response.Content);
Console.ReadLine();
}
}