Open棟梁Project - マイクロソフト系技術情報 Wiki
.NETクライアントからHTTPリクエストを送る場合、
従来は、
使用していたが、こちらは設計が古いもよう。
新しくは、.NET Framework 4.5 では BCL 入りした
System.Net.Http.dllのHttpClientクラスを使用する。
なお、JavaScriptからは、jQuery.ajax()を使用する。
.NET Framework 4.5 で BCL 入りした、高機能で使い勝手がいいAPI。
以下のHttpClient?によるPOSTのサンプル・スニペットを使用すれば色々なパターンを処理可能。
// HttpClient private static HttpClient _httpClient = new HttpClient();
// HttpRequestMessage (Method & RequestUri)
httpRequestMessage = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("http://localhost/・・・",
};
// HttpRequestMessage (Headers & Content)
httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue(
    "Basic",
    Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(
        string.Format("{0}:{1}", "・・・", "・・・"))));
httpRequestMessage.Content = new FormUrlEncodedContent(
    new Dictionary<string, string>
    {
        { "grant_type", "authorization_code" },
        { "code", code },
        { "redirect_uri", System.Web.HttpUtility.HtmlEncode(
            "http://localhost/・・・") },
    });
// HttpResponseMessage
httpResponseMessage = await _httpClient.SendAsync(httpRequestMessage);
response = await httpResponseMessage.Content.ReadAsStringAsync();
dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(response);
GETについては、上記コードの
でイケる。と思う。
.NETでHTTPリクエストを処理するための最古のAPI。
以下が参考になる。
SilverlightがSOAPサーバーと通信するケースが増えたため、追加されたAPI。
以下が参考になる。
HTTPリクエストを使用してデータを取得するajax の最も低レベルな実装。
以下の様なメソッドも存在する。
以下のjQuery.ajaxによるPOSTのサンプル・スニペットを使用すれば色々なパターンを処理可能。
$('#btnTest').click(function () {
    $.ajax({
        type: 'post',
        url: 'http://・・・',
        crossDomain: true,
        contentType: 'application/x-www-form-urlencoded',
        headers: {
            'Authorization': 'Bearer ' + token
        },
        data: {
            client_id: '・・・',
            client_secret: '・・・',
        },
        xhrFields: {
            withCredentials: true
        },
        success: function (responseData, textStatus, jqXHR) {
            alert(textStatus + ', ' + JSON.stringify(responseData));
        },
        error: function (responseData, textStatus, errorThrown) {
            alert(textStatus + ', ' + errorThrown.message);
        }
    });
});
上記を、GETもイケるよう、改造した。
urlに'get'を、postdataにはnullを指定する。
function CallOAuthAPI(url, httpMethod, postdata) {
    $.ajax({
        type: httpMethod,
        url: url,
        crossDomain: true,
        headers: {
            'Authorization': 'Bearer ' + token
        },
        data: postdata,
        xhrFields: {
            withCredentials: true
        },
        success: function (responseData, textStatus, jqXHR) {
            alert(textStatus + ', ' + JSON.stringify(responseData));
        },
        error: function (responseData, textStatus, errorThrown) {
            alert(textStatus + ', ' + errorThrown.message);
        }
    });
}
以下が参考になるが、
最近のOAuth 2.0 や OpenID Connect等では、"Implicit Grant"と呼ばれるWebAPI専用フローがあり、認証Cookieは使用しないで、
Bearer TokenというものをHTTPヘッダに付与して認証・認可するのが一般的になってきている。CROSの認証などもコレによって行う。
Tags: :ASP.NET