public IEnumerator Logout(string token, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(route => route.Key == "logout").Value; UnityWebRequest request = UnityWebRequest.Post(url, ""); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + token); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { error(request.error); } else { try { String json = request.downloadHandler.text; LogoutResponse response = JsonUtility.FromJson <LogoutResponse>(json); if (response.success) { complete(); } else { error(response.error.message); } } catch (Exception ex) { error(ex.ToString()); } } }
public IEnumerator Save(String token, OnRequestComplete complete, OnRequestError error, PlanRequest plan) { string url = routes.Single(u => u.Key == "plans").Value; Debug.Log("plan name in kHttp = " + plan.name); Debug.Log("Plan ToJson = " + JsonUtility.ToJson(plan)); Debug.Log("URL is = " + url); UnityWebRequest request = UnityWebRequest.Put(url, JsonUtility.ToJson(plan)); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + token); request.method = UnityWebRequest.kHttpVerbPOST; yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { Debug.Log("GOT A HTTP isHttpError = " + request.isHttpError); Debug.Log("GOT A HTTP isNetworkError = " + request.isNetworkError); error(request.error); } else { String json = request.downloadHandler.text; complete(json); } }
private static IEnumerator _DownloadFile(string url, string savePath, OnRequestSuccess onDownloadStart, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress) { var headRequest = UnityWebRequest.Head(url); yield return(headRequest.SendWebRequest()); var totalSize = long.Parse(headRequest.GetResponseHeader("Content-Length")); var fileInfo = new FileInfo(savePath); if (fileInfo.Exists && fileInfo.Length == totalSize) { onFinish?.Invoke(headRequest); } else { using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET)) { var handler = new DownloadHandlerFileRange(savePath, request); request.downloadHandler = handler; onDownloadStart?.Invoke(request); var asyncOp = request.SendWebRequest(); while (!asyncOp.isDone) { yield return(null); onProgress?.Invoke(asyncOp); } if (request.isNetworkError || request.isHttpError) { handler.Close(); if (onError != null) { Debug.LogWarningFormat("SendRequest Failed:\nresponseCode :{0}\nerror :{1}\nurl:{2}", request.responseCode, request.error, request.url); onError(request); } else { Debug.LogErrorFormat("SendRequest Failed:\nresponseCode :{0}\nerror :{1}\nurl:{2}", request.responseCode, request.error, request.url); } } else { Debug.LogFormat("Finish UnityWebRequest: {0}\nresponseCode :{1}", request.url, request.responseCode); onFinish?.Invoke(request); } } } }
public static void DownloadFile(string url, string savePath, OnRequestSuccess onDownloadStart, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress) { string dir = Path.GetDirectoryName(savePath); if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) { Directory.CreateDirectory(dir); } Instance.StartCoroutine(_DownloadFile(url, savePath, onDownloadStart, onFinish, onError, onProgress)); }
/// <summary> /// in case of a failure will enqueue the failed request again /// </summary> /// <param name="task">the task that handled the request</param> /// <param name="state">the original request object</param> private void HandleResponse(Task <HttpResponseMessage> task, object state) { Interlocked.Decrement(ref pending); if (!task.IsCompleted || task.Status != TaskStatus.RanToCompletion) { Retry(state as QueueRequest); OnRequestError?.Invoke(task.Exception, task.Status == TaskStatus.Canceled); } else if ((int)task.Result.StatusCode >= 300) { Retry(state as QueueRequest); OnHttpError?.Invoke(task.Result.StatusCode); } else { OnRequestSent?.Invoke(); } }
public IEnumerator GetList(String token, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(u => u.Key == "plans").Value; UnityWebRequest request = UnityWebRequest.Get(url); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + token); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { Debug.Log(request); error(request.error); } else { String json = request.downloadHandler.text; complete(json); } }
protected async Task <DateTime[]> GetDates() { RestRequest request = new RestRequest($"{PlatformInfo.GetAvailableDatesApiMethod}/{OperationInfo.Number}"); ConfigureRequest(request); IRestResponse dates = await ApiClient.ExecuteAsync(request); if (dates.StatusCode != HttpStatusCode.OK) { OnRequestError?.Invoke(this, new DateCheckerErrorEventArgs((int)dates.StatusCode)); throw new Exception(); } if (dates.Content.Contains(PlatformInfo.GeneralErrorMessage)) { OnRequestError?.Invoke(this, new DateCheckerErrorEventArgs((int)dates.StatusCode)); throw new Exception(); } DateTime[] availableDates = null; try { DateCheckDto dateCheckDto = JsonConvert.DeserializeObject <DateCheckDto>(dates.Content); availableDates = dateCheckDto.AvailableDates; } catch { availableDates = JsonConvert.DeserializeObject <DateTime[]>(dates.Content); } string datesString = JsonConvert.SerializeObject(availableDates); OnRequestOK?.Invoke(this, new DateCheckerOkEventArgs(datesString)); return(availableDates); }
public IEnumerator Me(string token, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(route => route.Key == "me").Value; Debug.Log("ME AUTH TOKE = " + token); UnityWebRequest request = UnityWebRequest.Get(url); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + token); Debug.Log("Auth token = " + token); request.method = UnityWebRequest.kHttpVerbGET; yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { error(request.error); } else { try { String json = request.downloadHandler.text; Debug.Log("JsonResponseLogin =" + json); UserResponse response = JsonUtility.FromJson <UserResponse>(json); if (response.success) { UserManager.instance.Login(response.data.firstname, response.data.lastname, response.data.email, response.data.state, response.data.zip, response.data.phone, response.data.id); complete(); } else { error(response.error.message); } } catch (Exception ex) { error(ex.ToString()); } } }
public IEnumerator SignIn(string email, string password, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(route => route.Key == "login").Value; WWWForm data = new WWWForm(); data.AddField("email", email); data.AddField("password", password); UnityWebRequest request = UnityWebRequest.Post(url, data); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { error(request.error); } else { try { String json = request.downloadHandler.text; AuthResponse response = JsonUtility.FromJson <AuthResponse>(json); if (response.success) { HttpManager.instance.token = response.data.access_token; complete(); } else { error(response.error.message); } } catch (Exception ex) { error(ex.ToString()); } } }
public IEnumerator Register(string email, string password, string firstname, string lastname, string state, int zip, string phone, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(route => route.Key == "register").Value; WWWForm regData = new WWWForm(); regData.AddField("email", email); regData.AddField("password", password); regData.AddField("firstname", firstname); regData.AddField("lastname", lastname); regData.AddField("state", state); regData.AddField("zip", zip); regData.AddField("phone", phone); UnityWebRequest request = UnityWebRequest.Post(url, regData); request.SetRequestHeader("Accept", "application/json"); //request.SetRequestHeader("Content-Type", "application/json"); //request.method = UnityWebRequest.kHttpVerbPOST; Debug.Log(request); Debug.Log("url = " + url); Debug.Log("regData = " + regData); //request.SetRequestHeader("Accept", "application/json"); yield return(request.SendWebRequest()); //String json = request.downloadHandler.data; //Debug.Log(request.downloadHandler.text); if (request.isNetworkError || request.isHttpError) { error(request.error); error(request.downloadHandler.text); } else { try { String json = request.downloadHandler.text; Debug.Log("Register Repsonse JSON = " + json); RegisterResponse response = JsonUtility.FromJson <RegisterResponse>(json); if (response.success) { UserManager.instance.Login( response.data.user.firstname, response.data.user.lastname, response.data.user.email, response.data.user.state, response.data.user.zip, response.data.user.phone, response.data.user.id); HttpManager.instance.token = response.data.token; complete(); } else { error(json); //error(response.error.message); } } catch (Exception ex) { Debug.Log("Found exception ");// + ex); error(ex.ToString()); } } }
//--------------------------------------------------------Constructor:----------------------------------------------------------------\\ #region --Constructors-- #endregion //--------------------------------------------------------Set-, Get- Methods:---------------------------------------------------------\\ #region --Set-, Get- Methods-- #endregion //--------------------------------------------------------Misc Methods:---------------------------------------------------------------\\ #region --Misc Methods (Public)-- #endregion #region --Misc Methods (Private)-- #endregion #region --Misc Methods (Protected)-- protected void InvokeOnRequestError(RequestErrorEventArgs args) { OnRequestError?.Invoke(this, args); }
public static void Download(string url, string savePath, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry = 3, float retryDelay = 1.0f) { string dir = Path.GetDirectoryName(savePath); if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) { Directory.CreateDirectory(dir); } Instance.StartCoroutine(TrySendRequest(url, (uri) => { var uwr = new UnityWebRequest(uri, UnityWebRequest.kHttpVerbGET) { downloadHandler = new DownloadHandlerFile(savePath) }; return(uwr); }, onFinish, onError, onProgress, maxRetry, retryDelay)); }
public delegate void OnRequestError(string code); // Ошибка запроса public async Task <bool> sendRequest(string url, FormUrlEncodedContent data, OnRequestComplete complete, OnRequestError error) { /* Data Form Example */ /*var formContent = new FormUrlEncodedContent(new[]{ * new KeyValuePair<string, string>("somekey", "1"), * });*/ // Создаем клиент и отправляем запрос try{ var myHttpClient = new HttpClient(); // Создать клиент var response = await myHttpClient.PostAsync(url, data); // Ждем ответа от сервера var json = await response.Content.ReadAsStringAsync(); // Получаем ответ от сервера для конверсии // Попытка обработки ответа сервера try{ // Успех responceBase resp = JsonConvert.DeserializeObject <responceBase>(json); // Конверсия JSON if (resp.complete) // Все прошло хорошо { complete(json); // Все прошло ОК return(true); } else // Ошибка { error(resp.message); // Выдать ошибку return(false); } } catch (Exception ex) { // Ошибка error("Failed to convert server responce. Please, try again later." + json); // Выдать ошибку return(false); } } catch (Exception ex) { // Ошибка отправки запроса error("Failed to send responce. Please, check your internet connection and try again."); // Выдать ошибку return(false); } }
public static async void GET(string url, OnRequestComplete complete, OnRequestError error) { await GETAsync(url, complete, error); }
public IEnumerator GetToken(int plan_id, string auth_token, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(u => u.Key == "share").Value + plan_id.ToString(); //string url = routes.Single(route => route.Key == "share").Value + plan_id.ToString(); UnityWebRequest request = UnityWebRequest.Get(url); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + auth_token); request.method = UnityWebRequest.kHttpVerbGET; yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { error(request.error); } else { try { String json = request.downloadHandler.text; Debug.Log(json); //Share response = JsonUtility.FromJson<UserResponse>(json); //if (response.success) { // UserManager.instance.Login(response.data.firstname, response.data.lastname, response.data.email, response.data.state, response.data.zip, response.data.phone); //complete(); //} else { //error(response.error.message); //} } catch (Exception ex) { error(ex.ToString()); } } }
private IEnumerator _sendRequest(string url, WWWForm data, OnRequestCompleted complete = null, OnRequestError error = null) { var request = new WWW(url, data); // Create WWW Request yield return(request); // Send Request // Work with Response if (request.error != null) // Request has error { throw new Exception("Не удалось отправить запрос к серверу VK API. Проверьте соединение с интернетом и попробуйте снова."); } else // No Errors { BaseRequestModel response = JsonUtility.FromJson <BaseRequestModel>(request.text); // Get Base Model from Response Text if (response.error.error_code == -1) { // Response not has an errors if (complete != null) { complete(request.text); // Return Complete } } else { // Reponse has errors if (error != null) { error(response.error); // Show Error } if (settings.debug_mode) { Debug.Log("VK SDK Error: " + response.error.error_msg); } } } }
private async Task RegisterConsumerAsync(CancellationToken stoppingToken) { var topic = string.Format(Topics.Spider, SpiderId.Id); Logger.LogInformation($"{SpiderId} register topic {topic}"); _consumer = new AsyncMessageConsumer <byte[]>(topic); _consumer.Received += async bytes => { object message; try { message = await bytes.DeserializeAsync(stoppingToken); if (message == null) { return; } } catch (Exception e) { Logger.LogError($"Deserialize message failed: {e}"); return; } switch (message) { case Messages.Spider.Exit exit: { Logger.LogInformation( $"{SpiderId} receive exit message {System.Text.Json.JsonSerializer.Serialize(exit)}"); if (exit.SpiderId == SpiderId.Id) { await ExitAsync(); } break; } case Response response: { // 1. 从请求队列中去除请求 // 2. 若是 timeout 的请求,无法通过 Dequeue 获取,会通过 _requestedQueue.GetAllTimeoutList() 获取得到 var request = _requestedQueue.Dequeue(response.RequestHash); if (request != null) { if (response.StatusCode.IsSuccessStatusCode()) { request.Agent = response.Agent; if (IsDistributed) { Logger.LogInformation( $"{SpiderId} download {request.RequestUri}, {request.Hash} via {request.Agent} success"); } // 是否下载成功由爬虫来决定,则非 Agent 自身 await _services.StatisticsClient.IncreaseAgentSuccessAsync(response.Agent, response.ElapsedMilliseconds); await HandleResponseAsync(request, response, bytes); } else { await _services.StatisticsClient.IncreaseAgentFailureAsync(response.Agent, response.ElapsedMilliseconds); Logger.LogError( $"{SpiderId} download {request.RequestUri}, {request.Hash} status code: {response.StatusCode} failed: {response.ReasonPhrase}"); // 每次调用添加会导致 Requested + 1, 因此失败多次的请求最终会被过滤不再加到调度队列 await AddRequestsAsync(request); OnRequestError?.Invoke(request, response); } } break; } default: Logger.LogError( $"{SpiderId} receive error message {System.Text.Json.JsonSerializer.Serialize(message)}"); break; } }; await _services.MessageQueue.ConsumeAsync(_consumer, stoppingToken); }
public static void Post(string url, byte[] postBytes, string contentType, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry = 3, float retryDelay = 1.0f) { Instance.StartCoroutine(TrySendRequest(url, (uri) => { UnityWebRequest request = new UnityWebRequest(uri, "POST") { uploadHandler = new UploadHandlerRaw(postBytes) { contentType = contentType }, downloadHandler = new DownloadHandlerBuffer() }; return(request); }, onFinish, onError, onProgress, maxRetry, retryDelay)); }
private static IEnumerator TrySendRequest(string url, Func <string, UnityWebRequest> requestCreator, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry, float retryDelay) { Debug.LogFormat("Start Send UnityWebRequest: " + url); int retry = 0; while (retry++ < maxRetry) { using (var request = requestCreator(url)) { var asyncOp = request.SendWebRequest(); while (!asyncOp.isDone) { if (onProgress != null) { onProgress(asyncOp); } yield return(null); } if (request.isNetworkError || request.isHttpError) { if (retry >= maxRetry) { if (onError != null) { Debug.LogWarningFormat("SendRequest Failed:\nresponseCode :{0}\nerror :{1}\nurl:{2}", request.responseCode, request.error, request.url); onError(request); } else { Debug.LogErrorFormat("SendRequest Failed:\nresponseCode :{0}\nerror :{1}\nurl:{2}", request.responseCode, request.error, request.url); } } else { Debug.LogFormat("Try again url :{0}\ntime :{1}\nresponseCode :{2}\nerror :{3}", request.url, retry, request.responseCode, request.error); yield return(new WaitForSeconds(retryDelay)); } } else { Debug.LogFormat("Finish UnityWebRequest: {0}\nresponseCode :{1}", request.url, request.responseCode); if (onFinish != null) { onFinish(request); } break; //success,break retry loop } } } }
public static void Post(string url, string postData, string contentType, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry = 3, float retryDelay = 1.0f) { Post(url, Encoding.UTF8.GetBytes(postData), contentType, onFinish, onError, onProgress, maxRetry, retryDelay); }
public static async Task <bool> GETAsync(string url, OnRequestComplete complete, OnRequestError error) { try { // Creating client and send request // Set client vars var myHttpClient = new HttpClient(); // Create HTTP Client myHttpClient.DefaultRequestHeaders.Add("View", "stb3"); myHttpClient.DefaultRequestHeaders.Add("X-Auth-Token", Hidden.ServiceToken); var response = await myHttpClient.GetAsync(url); // HTTP Response var json = await response.Content.ReadAsStringAsync(); // JSON Data try { complete(json); // Show Complete return(true); } catch (Exception ex) { // Failed to decode data error(ex.Message + ex.StackTrace); // Show Error return(false); } } catch (Exception ex) { // Failed to send request error(ex.Message + "\n=====================\n" + ex.StackTrace); // Show Error return(false); } }
public static void PostRaw(string url, string postData, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry = 3, float retryDelay = 1.0f) { Instance.StartCoroutine(TrySendRequest(url, (uri) => UnityWebRequest.Post(uri, postData), onFinish, onError, onProgress, maxRetry, retryDelay)); }
private IEnumerator SendTimeStatistics(string currentPlatform, int time, OnRequestComplete complete, OnRequestError error) { WWWForm newForm = new WWWForm(); //string currentPlatform = Enum.GetName(typeof(Platform), _platform); newForm.AddField(_DATABASE_HOST, _databaseHost); newForm.AddField(_DATABASE_USER, _databaseUsername); newForm.AddField(_DATABASE_PASSWORD, _databasePassword); newForm.AddField(_DATABASE_NAME, _databaseName); newForm.AddField(_DATABASE_PORT_NUMBER, _databasePort); newForm.AddField(_GAME_TABLE, _tableName); newForm.AddField(_PLATFORM_COLUMN_NAME, _platfomColumnName); newForm.AddField(_TIME_COLUMN_NAME, _timeColumnName); newForm.AddField(_PLATFORM, currentPlatform); newForm.AddField(_TIME_VALUE, time); WWW request = new WWW(_PHP_SCRIPT_URL, newForm); yield return(request); if (request.error != null) { error("Не удалось отправить запрос на сервер"); } else { try { Debug.Log(request.text); if (request.text == _PHP_SCRIPT_RETURN) { complete(); } else { error(request.text); } } catch { error("Не удалось обработать ответ сервера"); Debug.Log("Ошибка обработки ответа сервера. Данные ответа: " + request.text); } } }
public static async Task <bool> POSTAsync(string url, HttpContent data, OnRequestComplete complete, OnRequestError error) { try { // Creating client and send request // Set client vars var myHttpClient = new HttpClient(); // Create HTTP Client var response = await myHttpClient.PostAsync(url, data); // HTTP Response var json = await response.Content.ReadAsStringAsync(); // JSON Data try { complete(json); // Show Complete return(true); } catch (Exception ex) { // Failed to decode data error(ex.Message + "\n=====================\n" + ex.StackTrace); // Show Error return(false); } } catch (Exception ex) { // Failed to send request error(ex.Message + "\n=====================\n" + ex.StackTrace); // Show Error return(false); } }
public IEnumerator Delete(String token, int plan_id, OnRequestComplete complete, OnRequestError error) { string url = routes.Single(u => u.Key == "plans").Value + '\\' + plan_id; UnityWebRequest request = UnityWebRequest.Delete(url); request.SetRequestHeader("Accept", "application/json"); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + token); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { error(request.error); } else { string good = "Success"; //String json = request.downloadHandler.text; complete(good); } }
public static async Task <bool> PostImage(string url, OnRequestComplete complete, OnRequestError error) { try { // Creating client and send request var myHttpClient = new HttpClient(); // Create HTTP Client myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8"); myHttpClient.DefaultRequestHeaders.Add("Authorization", Hidden.YandexToken); var response = await myHttpClient.PostAsync("https://dialogs.yandex.net/api/v1/skills/" + Hidden.YandexSkillId + "/images", Request.ToHttpContent(new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("url", url) // App token })); // HTTP Response var json = await response.Content.ReadAsStringAsync(); // JSON Data try { complete(json); // Show Complete return(true); } catch (Exception ex) // { // Failed to decode data error(ex.Message + "\n=====================\n" + ex.StackTrace); // Show Error return(false); } } catch (Exception ex) { // Failed to send request error(ex.Message + "\n=====================\n" + ex.StackTrace); // Show Error return(false); } }
public static async void POST(string url, HttpContent data, OnRequestComplete complete, OnRequestError error) { await POSTAsync(url, data, complete, error); }
public static void Get(string url, OnRequestSuccess onFinish, OnRequestError onError, OnRequestProgress onProgress, int maxRetry = 3, float retryDelay = 1.0f) { Instance.StartCoroutine(TrySendRequest(url, UnityWebRequest.Get, onFinish, onError, onProgress, maxRetry, retryDelay)); }