Unityのバージョン: Unity 2017.4.13f1
https://unity3d.com/jp/get-unity/download/archive
zipcloud 郵便番号検索API
http://zipcloud.ibsnet.co.jp/doc/api
#Unity側の設定
- Hierarchyに空のゲームオブジェクトを作成して名前をMainControllerにします。
- 名前がMainControllerのC#ファイルを作成して、ゲームオブジェクトのMainControllerのコンポーネントに追加します。
- UI > Textオブジェクトを作成して、MainControllerスクリプトのプロパティText Resultにセットします。
- UI > Buttonオブジェクトを作成して、On Clickプロパティを+ボタンで追加します。
- 追加したOn ClickプロパティにMainControllerオブジェクトをセットして、FunctionにMainControllerのOnClickメソッドを指定します。
#UnityからHTTPにGET接続する方法
MainController.cs
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class MainController : MonoBehaviour
{
//接続するURL
private const string URL = "http://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060";
//ゲームオブジェクトUI > ButtonのInspector > On Click()から呼び出すメソッド
public void OnClick()
{
//コルーチンを呼び出す
StartCoroutine("OnSend", URL);
}
//コルーチン
IEnumerator OnSend(string url)
{
//URLをGETで用意
UnityWebRequest webRequest = UnityWebRequest.Get(url);
//URLに接続して結果が戻ってくるまで待機
yield return webRequest.SendWebRequest();
//エラーが出ていないかチェック
if (webRequest.isNetworkError)
{
//通信失敗
Debug.Log(webRequest.error);
}
else
{
//通信成功
Debug.Log(webRequest.downloadHandler.text);
}
}
}
#UnityからHTTPにPOST接続する方法
MainController.cs
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class MainController : MonoBehaviour
{
//接続するURL
private const string URL = "http://zipcloud.ibsnet.co.jp/api/search";
//ゲームオブジェクトUI > ButtonのInspector > On Click()から呼び出すメソッド
public void OnClick()
{
//コルーチンを呼び出す
StartCoroutine("OnSend", URL);
}
//コルーチン
IEnumerator OnSend(string url)
{
//POSTする情報
WWWForm form = new WWWForm();
form.AddField("zipcode", 1000001);
//URLをPOSTで用意
UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
//UnityWebRequestにバッファをセット
webRequest.downloadHandler = new DownloadHandlerBuffer();
//URLに接続して結果が戻ってくるまで待機
yield return webRequest.SendWebRequest();
//エラーが出ていないかチェック
if (webRequest.isNetworkError)
{
//通信失敗
Debug.Log(webRequest.error);
}
else
{
//通信成功
Debug.Log(webRequest.downloadHandler.text);
}
}
}
#UnityでJSONデータを読み込んでSerializableクラスに入れる方法
MainController.cs
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class MainController : MonoBehaviour
{
//接続するURL
private const string URL = "http://zipcloud.ibsnet.co.jp/api/search";
//JSONデータを表示するUI > Textオブジェクト
public Text textResult;
//ゲームオブジェクトUI > ButtonのInspector > On Click()から呼び出すメソッド
public void OnClick()
{
//コルーチンを呼び出す
StartCoroutine("OnSend", URL);
}
//コルーチン
IEnumerator OnSend(string url)
{
//POSTする情報
WWWForm form = new WWWForm();
form.AddField("zipcode", 1000001);
//URLをPOSTで用意
UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
//UnityWebRequestにバッファをセット
webRequest.downloadHandler = new DownloadHandlerBuffer();
//URLに接続して結果が戻ってくるまで待機
yield return webRequest.SendWebRequest();
//エラーが出ていないかチェック
if (webRequest.isNetworkError)
{
//通信失敗
Debug.Log(webRequest.error);
}
else
{
//通信成功
//ZipクラスにJSONデータを格納する
Zip zip = JsonUtility.FromJson<Zip>(webRequest.downloadHandler.text);
//zipクラスに格納したJSONデータをゲームオブジェクトUI > Textに出力する
textResult.text = zip.message + "," + zip.results.Length + "," + zip.status;
foreach (ZipResult zr in zip.results)
{
textResult.text += string.Format("\n{0},{1},{2},{3}", zr.address1, zr.address2, zr.address3, zr.prefcode);
}
}
}
}
読み込むJSONデータ
JSONデータ.txt
{
"message": null,
"results": [
{
"address1": "東京都",
"address2": "千代田区",
"address3": "千代田",
"kana1": "トウキョウト",
"kana2": "チヨダク",
"kana3": "チヨダ",
"prefcode": "13",
"zipcode": "1000001"
}
],
"status": 200
}
JSONデータを格納するためのSerializableクラス
Zip.cs
[System.Serializable]
public class Zip
{
public string message;
public ZipResult[] results;
public int status;
}
ZipResult.cs
[System.Serializable]
public class ZipResult
{
public string address1;
public string address2;
public string address3;
public string kana1;
public string kana2;
public string kana3;
public string prefcode;
public string zipcode;
}