4

私は WCF Rest Starter Kit をRightScale の Login APIと一緒に使用しようとしていますが、これはかなり使いやすいようです。

編集 -これは、Powershell を使用して API を使用する方法について書いたブログエントリです。

編集 - RightScale API 用の汎用 .NET ラッパーを作成 - NRightAPI

CURL を使用しているときとまったく同じように単純です。ログイン Cookie を取得するために必要なことは次のとおりです。

curl -v -c rightcookie -u ユーザー名:パスワード " https://my.rightscale.com/api/acct/accountid/login?api_version=1.0 "

そして、次の Cookie を受け取ります。

HTTP/1.1 204 No Content Date: Fri, 25
Dec 2009 12:29:24 GMT Server: Mongrel 1.1.3 Status: 204 No Content X-Runtime: 0.06121
Content-Type: text/html; charset=utf-8 Content
-Length: 0
キャッシュ制御: キャッシュなし パス=/; 安全な Vary: Accept-Encoding


ただし、次の C# コードを使用すると:

HttpClient http = new HttpClient(" https://my.rightscale.com/api/accountid/login?api_version=1.0 ");
http.TransportSettings.UseDefaultCredentials = false;
http.TransportSettings.MaximumAutomaticRedirections = 0;
http.TransportSettings.Credentials = new NetworkCredential("ユーザー名", "パスワード");
Console.WriteLine(http.Get().Content.ReadAsString());

HTTP 204 の代わりに、リダイレクトを取得します。

<a> href="https://my.rightscale.com/dashboard">リダイレクトされています <a>

WCF REST スターター キットを RighScale API と連携させるにはどうすればよいですか?

4

1 に答える 1

6

「Authorization: Basic」ヘッダーをリクエストに追加する必要がありました。

私が投稿した最初のコードに加えて:

HttpClient http = new HttpClient(" https://my.rightscale.com/api/acct/accountid/login?api_version=1.0 ");
http.TransportSettings.UseDefaultCredentials = false;
http.TransportSettings.MaximumAutomaticRedirections = 0;
http.TransportSettings.Credentials = new NetworkCredential("ユーザー名", "パスワード");

次のように、ユーザー名/パスワードを使用して REST 要求と共に Authorization ヘッダーを追加する必要があります。

byte[] authbytes = Encoding.ASCII.GetBytes(string.Concat("ユーザー名",":", "パスワード"));
文字列 base64 = Convert.ToBase64String(authbytes);
string authorization = string.Concat("Authorization: Basic ", base64);
http.DefaultHeaders.Add(認可);

そして、私がリクエストをしたとき:

Console.WriteLine(http.Get().Content.ReadAsString());

探していたセッション Cookie とともに HTTP 204 を受け取りました。何と言えますか、Fiddlerは素晴らしいです :) !

于 2009-12-26T13:50:33.697 に答える