Exemplo n.º 1
0
        IEnumerator InternalRequest(UnityWebRequest request, Action <string> onSucceed, Action onError, bool printSucceed = false, bool printError = false)
        {
            if (attemptsCounter.ContainsKey(request.url))
            {
                attemptsCounter[request.url]++;
            }
            else
            {
                attemptsCounter[request.url] = 1;
            }

            yield return(request.SendWebRequest());

            if (request.isNetworkError || request.isHttpError)
            {
                if (attemptsCounter[request.url] < maxAttempts)
                {
                    print(request.error);
                    print("New attempt " + request.method + " " + attemptsCounter[request.url] + " for " + UnityWebRequest.UnEscapeURL(request.url));
                    StartCoroutine(InternalRequest(request.Clone(), onSucceed, onError, printSucceed, printError));
                }
                else
                {
                    onError?.Invoke();
                    if (printError)
                    {
                        print("Failed code:" + request.responseCode + " after " + maxAttempts + " attempts " + request.error + " (" + UnityWebRequest.UnEscapeURL(request.url) + ")");
                    }

                    attemptsCounter.Remove(request.url);
                }
            }
            else
            {
                onSucceed?.Invoke(request.downloadHandler.text);
                if (printSucceed)
                {
                    print("print onSucceed : " + request.url + "\n" + request.downloadHandler.text);
                }

                attemptsCounter.Remove(request.url);
            }
        }