私はc#とユニティにかなり慣れていないので、json APIを介して外部サーバーと通信できるクラスを作成しようとしています。
コードを見るまでは問題なく、同じ部分を何度も繰り返していました (基本的に、API の各メソッドには、JSON.Parse 部分を持つ Ienumerator 関数がありました。
そこで、Get_Json という関数を 1 つ作成して、API リクエストをオブジェクトとして返せるようにしたほうがよいのではないかと考えるようになりました。私は壁にぶつかり、文字通りどうすればよいかわかりません。これを正しくする方法について助けていただければ幸いです。
using UnityEngine;
using System.Collections;
using SimpleJSON;
public class Site : MonoBehaviour {
/*
base url http://example.com/
* GET a Room: /ajax/API/?method=Get&hashtag=HASHTAG
* Create a Room: /ajax/API/?method=Create&hashtag=HASHTAG&token=TOKEN (optional)
* Delete a Room: /ajax/API/?method=Delete&hashtag=HASHTAG&token=TOKEN
* List Rooms: /ajax/API/?method=List_rooms
* List Hashtags: /ajax/API/?method=List_hashtags
*/
private string base_url = "http://example.com/ajax/API/?method=";
private string q = "";
IEnumerator Get_Json(string q){
var url = base_url+q;
WWW www = new WWW(url);
yield return www;
Debug.Log(www.text);
if (www.error == null){
var Resource = JSON.Parse(www.text);
if(int.Parse(Resource["Code"]) == 200){
Debug.Log("All right");
}
else{
Debug.Log(Resource["Code"]);
}
}
else{
Debug.Log("Failed an http request:\n"+url+"\n"+www.error);
}
yield return null;
}
// Use this for initialization
void Start () {
StartCoroutine(Get_Json("List_rooms"));
}
// Update is called once per frame
void Update () {
}
}