2011-12-22 12 views
1

.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(); 


    } 
} 
+0

ハンモックを使用する代わりにRestSharpを使用しました。最初の試行で、Recurlyを使用した基本認証方法を非常に迅速に取得できました。その結果、私は私のプロジェクトにハンモックを使用しません。 –

答えて

0

を私の質問への答えを取得していないの後、私は、.NET用の代替レストライブラリの検索を行なったし、RestSharpを見つけました。最初の試行で組み込みのBasic Authorizationの実装を使用してRecurlyで作業できるようになったので、RestSharpを使用して実装します。コードは非常によく似ているので、移行は簡単なものでなければなりません。

関連する問題