使用HttpClient和RightScale API

Ame*_*een 4 rest powershell wcf cloud-hosting rightscale

我正在尝试将WCF Rest Starter Kit与RightScale的Login API一起使用,这看起来相当简单.

编辑-这里有一个博客条目我就使用PowerShell来使用API写道.

编辑 - 为RightScale API创建通用.NET包装器 - NRightAPI

它与使用CURL时的外观完全一样简单.为了让我获得一个登录cookie,我需要做的是:

curl -v -c rightcookie -u username:password" https://my.rightscale.com/api/acct/accountid/login?api_version=1.0 "

我收到以下cookie:

HTTP/1.1 204否内容日期:
2009 年12月25 日星期五 12:29:24 GMT服务器:Mongrel 1.1.3状态:204否内容X-Runtime:0.06121
内容类型:text/html; charset = utf-8
内容长度:0
缓存控制:无缓存
为域my.rightscale.com添加cookie _session_id ="488a8d9493579b9473fbcfb94b3a7b8e5e3",路径/,到期0
Set-Cookie:_session_id = 488a8d9493579b9473fbcfb94b3a7b8e5e3; 路径= /; 安全变化:接受编码

但是,当我使用以下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("username","password");
Console.WriteLine(http.Get()Content.ReadAsString());

而不是HTTP 204,我得到一个重定向:

您正在<a> href ="https://my.rightscale.com/dashboard">重定向<a>

如何使用RighScale API获取WCF REST入门套件?

Ame*_*een 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("username","password");

我需要使用用户名/密码添加Authorization标头和REST请求,如下所示:

byte [] authbytes = Encoding.ASCII.GetBytes(string.Concat("username",":","password"));
string base64 = Convert.ToBase64String(authbytes);
string authorization = string.Concat("Authorization:Basic",base64);
http.DefaultHeaders.Add(授权);

然后当我提出要求时:

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

我收到了HTTP 204以及我正在寻找的会话cookie.我能说什么,Fiddler太棒了:)!

  • 这是一个快捷方式http.DefaultHeaders.Authorization = Credential.CreateBasic("user","password"); (3认同)