public void ParseRequest <T>(YNoteRequestData data, Action <T> cb) { if (data.needOpenUrl) { Application.OpenURL(data.url); } StartCoroutine(SendRequest(data, cb)); }
public IEnumerator SendRequest <T>(YNoteRequestData data, Action <T> cb) { Log.send(data.ToString()); Log.SaveToFile("send", data.ToString()); UnityWebRequest request; switch (data.httpVerb) { default: case HTTPVerb.GET: request = UnityWebRequest.Get(data.url); break; case HTTPVerb.POST: { switch (data.contentType) { default: case HTTPContentType.DEFAULT: case HTTPContentType.APPLICATION: request = UnityWebRequest.Post(data.url, data.content); break; case HTTPContentType.MULTIPART: { List <IMultipartFormSection> multipartFormSections = new List <IMultipartFormSection>(); foreach (var kvp in data.content) { multipartFormSections.Add(new MultipartFormDataSection(kvp.Key, kvp.Value, YNoteOAuthUtil.GetHttpContentType(data.contentType))); } request = UnityWebRequest.Post(data.url, multipartFormSections); request.uploadHandler.contentType = YNoteOAuthUtil.GetHttpContentType(data.contentType); } break; } } break; } yield return(request.Send()); YNoteResponseData response = new YNoteResponseData(); response.errorMsg = request.error; response.httpResponseCode = request.responseCode; if (request.isNetworkError) { response.type = ResponseType.Error; Log.e("NetworkError", request.error); } else { response.type = ResponseType.Success; Log.d("HttpCode", request.responseCode); string text = request.downloadHandler.text; byte[] results = request.downloadHandler.data; response.text = text; switch (request.responseCode) { case 200: { if (StringUtil.IsHtmlStrSimple(text)) { Log.w("recv", "is html!"); break; } if (StringUtil.IsOAuthStrSimple(text)) { text = StringUtil.OAuthStr2JsonStr(text); } if (StringUtil.IsJsonStrSimple(text)) { T result = JsonConvert.DeserializeObject <T>(text); if (cb != null) { cb(result); } } } break; } } Log.recv(response.ToString()); Log.SaveToFile("recv", response.ToString()); if (defaultCB != null) { defaultCB(response); } }