概要
UnityWebRequest
にヘッダー情報を追加するためにはUnityWebRequest.SetRequestHeader
を利用します。
public void SetRequestHeader (string name, string value);
HTTP リクエストヘッダーをカスタムの値にセットします。
Header keys and values must be valid according to HTTP protocol specification. Neither string may contain certain illegal characters, such as control characters. Both strings must be non-null and contain a minimum of 1 character. For more information, see HTTP specifications.
このメソッドは Send が呼び出された後に呼び出すことはできません。
Networking.UnityWebRequest-SetRequestHeader - Unity スクリプトリファレンス
またBASIC認証をする際はAUTHORIZATION
というヘッダーのキーに対して、username
とpassword
の値を設定する必要があるのですが、ちょっとめんどくさい処理をかかないとダメです。
string basicUserName = "username"; string basicPassword = "password"; string authorization = $"Basic {Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes($"{basicUserName}:{basicPassword}"))}"; unityWebRequest.SetRequestHeader("AUTHORIZATION", authorization);
実験
さくらのレンタルサーバーさんがBASIC認証テストのサイトを公開してくれていたので、そちらで実験してみたいと思います。
leggiero.sakura.ne.jp
string url = "https://leggiero.sakura.ne.jp/xxxxbasic_auth_testxxxx/secret/kaiin_page_top.htm"; string basicUserName = "kaiin"; string basicPassword = "naisho"; UnityWebRequest unityWebRequest = UnityWebRequest.Get(url); string authorization = $"Basic {Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes($"{basicUserName}:{basicPassword}"))}"; unityWebRequest.SetRequestHeader("AUTHORIZATION", authorization); yield return unityWebRequest.SendWebRequest(); if (unityWebRequest.result == UnityWebRequest.Result.Success) { Debug.Log(unityWebRequest.responseCode); Debug.Log(unityWebRequest.downloadHandler.text); } else { Debug.Log(unityWebRequest.error); }
正しく動作していればresponseCode
が200
になっており、認証されていない場合は401
が返ってくるはずです。