.NETのHammock C#ライブラリを使用してRecurly REST APIを呼び出そうとしています。 API呼び出しには、HttpRequestのAuthorizationヘッダーが必要で、認証スキームはヘッダーのユーザー名部分にBase64でエンコードされたAPIキーを持つ基本認証です。私は、オブジェクトのUsernameプロパティにエンコードされたキーを持つ新しいHammock BasicAuthCredentialsオブジェクトを作成し、そのオブジェクトをRestClientまたはRestRequestオブジェクトのCredentialsプロパティに割り当てられると考えました。ただし、これはアウトバウンドHttpRequestにAuthorizationヘッダーを生成していないようです。Hammockを使用してBasicAuthCredentialsで繰り返しREST APIを呼び出す
これらのオブジェクトのいずれかで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();
}
}
ハンモックを使用する代わりにRestSharpを使用しました。最初の試行で、Recurlyを使用した基本認証方法を非常に迅速に取得できました。その結果、私は私のプロジェクトにハンモックを使用しません。 –