private async Task request( RequestType requestType, string requestUri, KeyValuePair <string, string>[] keysValue, Action <NetworkResponse> cbSuccessSent = null, Action <string> cbError = null ) { try { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(UserInfoManager.getInstance().userInfo.type, UserInfoManager.getInstance().userInfo.token); var content = new FormUrlEncodedContent(keysValue); HttpResponseMessage result; switch (requestType) { case RequestType.Post: result = await client.PostAsync(requestUri, content); break; case RequestType.Put: result = await client.PutAsync(requestUri, content); break; case RequestType.Delete: result = await client.DeleteAsync(requestUri); break; default: result = await client.GetAsync(requestUri); break; } if (result.IsSuccessStatusCode) { string resultContent = await result.Content.ReadAsStringAsync(); var jsonObject = (JObject)JsonConvert.DeserializeObject(resultContent); var networkResult = new NetworkResponse() { Successful = jsonObject["Successful"].Value <bool>(), Data = jsonObject["Data"] as JContainer, ErrorDescription = jsonObject["ErrorDescription"].Value <string>(), ErrorMessage = jsonObject["ErrorMessage"].Value <string>(), ErrorCode = jsonObject["ErrorCode"].Value <string>() }; cbSuccessSent?.Invoke(networkResult); } else { cbError?.Invoke("err:" + result.StatusCode.ToString()); } } catch (Exception ex) { cbError?.Invoke(ex.ToString()); Debug.WriteLine("ex: " + ex); } }
private async Task requestJson( RequestType requestType, string requestUri, object obj, Action <NetworkResponse> cbSuccessSent = null, Action <string> cbError = null ) { try { var content = new StringContent(JsonConvert.SerializeObject(obj).ToString(), Encoding.UTF8, "application/json"); HttpResponseMessage result; switch (requestType) { case RequestType.Post: result = await client.PostAsync(requestUri, content); break; case RequestType.Put: result = await client.PutAsync(requestUri, content); break; case RequestType.Delete: result = await client.DeleteAsync(requestUri); break; default: result = await client.GetAsync(requestUri); break; } if (result.IsSuccessStatusCode) { string resultContent = await result.Content.ReadAsStringAsync(); var jsonObject = (JObject)JsonConvert.DeserializeObject(resultContent); var networkResult = new NetworkResponse() { Successful = jsonObject["Successful"].Value <bool>(), Data = jsonObject["Data"] as JContainer, //ErrorDescription = jsonObject["ErrorDescription"].Value<string>(), //ErrorMessage = jsonObject["ErrorMessage"].Value<string>(), //ErrorCode = jsonObject["ErrorCode"].Value<string>() }; cbSuccessSent?.Invoke(networkResult); } else { cbError?.Invoke("err:" + result.StatusCode.ToString()); } } catch (Exception ex) { cbError?.Invoke(ex.ToString()); Debug.WriteLine("ex: " + ex); } }
async public Task UploadImage( string requestUri, byte[] ImageData, Action <NetworkResponse> cbSuccessSent = null, Action <string> cbError = null) { try { var requestContent = new MultipartFormDataContent(); // here you can specify boundary if you need---^ var imageContent = new ByteArrayContent(ImageData); imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); requestContent.Add(imageContent, "image", "image.jpg"); var result = await client.PostAsync(requestUri, requestContent); if (result.IsSuccessStatusCode) { string resultContent = await result.Content.ReadAsStringAsync(); var jsonObject = (JObject)JsonConvert.DeserializeObject(resultContent); var networkResult = new NetworkResponse() { Successful = jsonObject["Successful"].Value <bool>(), Data = JToken.FromObject(jsonObject["Data"].ToString()), ErrorDescription = jsonObject["ErrorDescription"].Value <string>(), ErrorMessage = jsonObject["ErrorMessage"].Value <string>(), ErrorCode = jsonObject["ErrorCode"].Value <string>() }; cbSuccessSent?.Invoke(networkResult); } else { cbError?.Invoke("err:" + result.StatusCode.ToString()); } } catch (Exception ex) { cbError?.Invoke(ex.ToString()); Debug.WriteLine("ex: " + ex); } }