web-dev-qa-db-ja.com

ユーザー名とパスワードを使用してREST APIを呼び出す-方法

APIを休ませて.NET経由で呼び出すのは初めてです

私はAPIを持っています: https://sub.domain.com/api/operations?param=value&param2=value

APIのメモには、許可するには基本アクセス認証を使用する必要があると書かれています-どうすればよいですか?

私は現在このコードを持っています:

        WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value");
        req.Method = "GET";
        //req.Credentials = new NetworkCredential("username", "password");
        HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

ただし、401不正なエラーが表示されます。

私は何が欠けていますか、基本アクセス認証を使用してAPI呼び出しを形成するにはどうすればよいですか?

34
andrewb

APIがHTTP基本認証を使用するように指示している場合、リクエストにAuthorizationヘッダーを追加する必要があります。コードを次のように変更します。

    WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value");
    req.Method = "GET";
    req.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("username:password"));
    //req.Credentials = new NetworkCredential("username", "password");
    HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

もちろん、"username""password"を正しい値に置き換えます。

52
Adrian

たとえば、RestSharpライブラリを使用することもできます

var userName = "myuser";
var password = "mypassword";
var Host = "170.170.170.170:333";
var client = new RestClient("https://" + Host + "/method1");            
client.Authenticator = new HttpBasicAuthenticator(userName, password);            
var request = new RestRequest(Method.POST); 
request.AddHeader("Accept", "application/json");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");            
request.AddParameter("application/json","{}",ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
1
orellabac