Unity:https发布并使用JSONObj获取请求

时间:2015-02-17 11:21:07

标签: c# android json https unity3d

我很。我正在为Android设备制作一个2D游戏,我很难理解所有WWW和http Forms事物。

我基本上需要做的是将请求发布到https url并使用凭据(用户名和密码)获取访问令牌,我必须使用JSON对象。

我需要更详细的方式:

1.向服务器创建2个请求以获取其他资产:为了接收访问令牌,我需要创建一个HTTP POST请求到包含JSON对象的特定URL,其中包含两个元素 - “username”和“password”。

2.向特定url'auth'标头创建HTTP GET请求,并使用在第一个请求中获取的访问令牌。响应包含一个JSON对象,其中包含5个附加艺术资产的URL。

3.然后我需要在游戏中随机放置包含图像的5个网址。

我知道如何在游戏中添加预制件,我找不到一个可以理解的指南来通过这个过程。我从资产商店下载了JSON对象

无需编写代码,即使理解也更清楚,我只需要了解如何获得结果的指南。

非常感谢我感谢每一次帮助!

1 个答案:

答案 0 :(得分:0)

(已弃用): WWWWWWForm应足以完成所有操作。

(更新版本): 我会按照@LabGecko的建议更新我的答案。

要将Web请求发送到服务器,您应该使用UnityWebRequest。这是我发送Post请求的方法(传递一些接受字符串作为callback的参数来处理结果的函数。)

//callback is used to handle server response
private IEnumerator SendPostRequest(string url, List<IMultipartFormSection> data, 
Action<string> callback, string _token = null)
{
    using (UnityWebRequest www = UnityWebRequest.Post(url, data))
    {
        //Set auth token if available
        if (!string.IsNullOrEmpty(_token))
            www.SetRequestHeader("authorization", string.Format("Bearer {0}", _token));

        www.SendWebRequest();

        while (!www.isDone)
        {
            yield return false;
        }

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
        }

        if (www.isDone)
        {
            callback(www.downloadHandler.text);
        }
    }
}

获取请求如下所示:

private IEnumerator SendGetRequest(string url, Action<string> callback, string _token = null)
{
    using (UnityWebRequest www = UnityWebRequest.Get(url))
    {
        if (!string.IsNullOrEmpty(_token))
            www.SetRequestHeader("authorization", string.Format("Bearer {0}", _token));

        www.SendWebRequest();

        while (!www.isDone)
        {
            yield return false;
        }

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
        }

        if (www.isDone)
        {
            callback(www.downloadHandler.text);
        }
    }
}

收到回复后,您可以使用JSONUtility来处理它的JSON部分。