Unityで実装するたびに毎回調べてる気がするのでパターンまとめておく!通しでアクセスするサンプルのURLは「https://example.com」とします。ちなみにこんなページ存在しないからね。
WebRequestを使ってWebリクエスト
最近のUnityではWebRequestを使ってhttp/httpsアクセスをするのが主流です。Webサイトの情報を取得する方法として覚えておきましょう。ゲーム用のサーバーへアクセスするのもこれ。
Getリクエスト(シンプル)
一番基本!特定のサイトやAPIにひとまずアクセスするといえばこれ。基本的にサーバー側のデータを取得したりするときに使用します。
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class Example : MonoBehaviour
{
private void Start()
{
StartCoroutine(GetRequest("http://example.com"));
}
private IEnumerator GetRequest(string uri)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
{
yield return webRequest.SendWebRequest();
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.Log(webRequest.error);
}
else
{
Debug.Log(webRequest.downloadHandler.text);
byte[] results = webRequest.downloadHandler.data;
}
}
}
}
byteデータで受け取ることで、画像ファイルとして扱うことも可能です。
Getリクエストにパラメータを含める
Getリクエストでは、引数のようにパラメータを渡すことが可能です。たとえばyoutubeの動画リンクの後ろにt=123
とかついているのは、動画の123秒から再生!という意味になったりします。ここでは下の表の2つのパラメータを追加する場合の変更になります。
パラメータ名 | パラメータ |
---|---|
key1 | value1 |
key2 | value2 |
private void Start()
{
StartCoroutine(GetRequest("http://example.com?key1=value1&key2=value2"));
}
GetリクエストはURLだけ見れば分かるシンプル設計!
Postリクエスト(シンプル)
Postリクエストはサーバー側の状態が変化するようなリクエストを行います。例えばアンケートのフォームなどを登録したりするのもPostリクエストがよく使われます。含めるパラメータは以下の表。
パラメータ名 | パラメータ |
---|---|
key1 | value1 |
key2 | value2 |
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class Example : MonoBehaviour
{
void Start()
{
StartCoroutine(PostRequest("http://example.com"));
}
IEnumerator PostRequest(string url)
{
WWWForm form = new WWWForm();
form.AddField("key1", "value1");
form.AddField("key2", "value2");
using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form))
{
yield return webRequest.SendWebRequest();
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.Log(webRequest.error);
}
else
{
if (webRequest.downloadHandler != null)
{
string text = webRequest.downloadHandler.text;
}
}
}
}
}
PostリクエストはWWWFormを利用して、パラメータを入れるんですね
ヘッダーパラメータを含める
Get/Post各リクエストにはヘッダーパラメータを含めることが出来ます。というか場所によっては含めないとデータを取得出来なかったり、アクセスを拒否されることがあります。代表的なパラメータは以下
パラメータ | 役割 | サンプルデータ |
---|---|---|
Content-Type | リクエストボディのメディアタイプ Jsonデータやテキストなどを指定する | application/json text/html multipart/form-data |
Authorization | 認証情報 APIキーなどを指定。 | your_api_key Bearer your_token (トークンの前にBearerが必要) |
Accept | クライアントが理解できるレスポンスのメディアタイプ パラメータ的にはContent-Typeと同じもの | application/json など |
User-Agent | クライアントのソフトウェアタイプ | Mozilla/5.0 (ここ省略) Safari/537.3 |
Content-Length | リクエストボディのバイト数を指定 | 数字 |
UnityWebRequest webRequest = UnityWebRequest.Post(url, postData);
webRequest.SetRequestHeader("Content-Type", "application/json");
webRequest.SetRequestHeader("Authorization", "Bearer your_token_here");
各リクエスト時に作られたUnityWebRequestに対して、SetRequestHeaderで必要なパラメータをセットしてください。
Webリダイレクト
リクエスト系に比べると、ややあっさりしてますがこちらもよく使うやつ。アプリ内でプライバシーポリシーなどでWebページにジャンプしてほしいこととかありますよね。それ
ボタンが押されたらリダイレクト
下のスクリプトをゲームオブジェクトに貼り付けて、インスペクターにボタンをセットしてください。あとはゲーム実行してボタン押せば、セットしているURLにリダイレクトしてくれます。
using UnityEngine;
using UnityEngine.UI;
public class WebRedirect : MonoBehaviour
{
[SerializeField] private Button button;
private void Start()
{
button.onClick.AddListener(() =>
{
Application.OpenURL("http://example.com");
});
}
}
リダイレクト時の注意点
ありきたりな注意点ではありますが、リダイレクト時には下記に注意してください。
- セキュリティについて
- ユーザーをリダイレクトするURLは信頼できるものでなければならない
- 危険なサイトへ誘導すると、ユーザーのセキュリティを脅かすことになります
- ユーザーエクスペリエンス
- アプリケーションから離脱することに関して注意が必要です。
- 必要以上にこの機能を使うべきではないでしょう
- プラットフォームの制約
- 利用するプラットフォームによってはサポートされていないことがあります
- この操作は想定されるプラットフォームでのみ行うようにしてください
コメント