Re: note

技術的な知見やポエムなど役に立たない情報を書き連ねる場所

UnityWebRequestを使ってBasic認証する

f:id:hik0leaf:20190907233633p:plain

UnityWebRequestを使ってBasic認証する方法です。 サンプルコードのBasic認証のテストとして以下のサイトを使わせていただきました。

leggiero.sakura.ne.jp

1. コード

以下のスクリプトを適当なGameObjectにアタッチします。

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class MainScript : MonoBehaviour
{
    private string url = "http://leggiero.sakura.ne.jp/xxxxbasic_auth_testxxxx/secret/kaiin_page_top.htm";

    void Start()
    {
        StartCoroutine(WebRequest("kaiin", "naisho"));
    }

    IEnumerator WebRequest(string id, string pass) {

        UnityWebRequest request = UnityWebRequest.Get(url);

        // Basic認証用のAUTHORIZATIONヘッダー付加
        string authorization = authenticate(id, pass);
        request.SetRequestHeader("AUTHORIZATION", authorization);

        yield return request.SendWebRequest();

        if (request.isNetworkError) {
            Debug.Log(request.error);
        } else {
            Debug.Log(request.responseCode);
        }
    }

    string authenticate(string username, string password) {
        string auth = username + ":" + password;
        auth = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth));
        auth = "Basic " + auth;
        return auth;
    }
}

2. 実行結果

認証に失敗すると 401 (Unauthorized)

f:id:hik0leaf:20190907234453p:plain
失敗 (401 Unauthorized)

成功すると 200 (OK)が返ります。

f:id:hik0leaf:20190907234532p:plain
成功 (200 OK)

返り値のbodyは request.downloadHandler.text で取得することができます。