Пример #1
0
    private IEnumerator MakeAPIRequest(string value, WebRequestOnDataReceiveDelegate onDataReceiveDelegate)
    {
        while (token == null) // Token retrieval is started during start.
        {
            yield return(new WaitForEndOfFrame());
        }

        string url = API_URL + value;

        Debug.Log("Start API Request to " + url);
        UnityWebRequest contentRequest = UnityWebRequest.Get(url);

        contentRequest.SetRequestHeader("Content-Type", "application/json");
        contentRequest.SetRequestHeader("Bearer", token);

        StartCoroutine(RequestCoroutine(contentRequest));

        float elapsedContentRequestTime = 0;

        while (contentRequest.result == UnityWebRequest.Result.InProgress)
        {
            elapsedContentRequestTime += Time.deltaTime;
            yield return(new WaitForEndOfFrame());

            if (elapsedContentRequestTime >= apiRequestTimeout)
            {
                throw new TimeoutException("Failed to make request to API in time!");
            }
        }
        Debug.Log("Finished API Request to " + url);

        onDataReceiveDelegate(contentRequest.downloadHandler.text);
    }
Пример #2
0
    private IEnumerator RequestDataCoroutine(UnityWebRequest request, WebRequestOnDataReceiveDelegate dataDelegate)
    {
        yield return(request);

        dataDelegate(request.downloadHandler.text);
    }