gpt4 book ai didi

wcf - 将 HttpClient 与 RightScale API 结合使用

转载 作者:行者123 更新时间:2023-12-02 19:36:47 26 4
gpt4 key购买 nike

我正在尝试将 WCF Rest Starter Kit 与 RightScale's Login API 一起使用使用起来似乎相当简单。

编辑 - 这是一个博客 entry我写过有关使用 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 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
Cache-Control: no-cache
Added cookie _session_id="488a8d9493579b9473fbcfb94b3a7b8e5e3" for domain my.rightscale.com, path /, expire 0
Set-Cookie: _session_id=488a8d9493579b9473fbcfb94b3a7b8e5e3; path=/; secure 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("username", "password");
Console.WriteLine(http.Get().Content.ReadAsString());

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

You are being <a> href="https://my.rightscale.com/dashboard">redirected <a>

如何让 WCF REST 入门套件与 RighScale API 配合使用?

最佳答案

我需要在我的请求中添加“Authorization: Basic” header 。

除了我发布的初始代码之外:

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");

我需要添加授权 header 以及带有用户名/密码的 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(authorization);

然后当我提出请求时:

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

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

关于wcf - 将 HttpClient 与 RightScale API 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com