예제 #1
0
        public async void SendRequestNative <T>(string uri, RequestHTTPMethod method, string data, Dictionary <string, string> requestHeader, Action <T> successCallback, Action <string> errorCallback = null)
        {
            HttpClient client = new HttpClient();
            // Add a new Request Message
            HttpRequestMessage requestMessage = new HttpRequestMessage(ConvertToHttpMethod(method), uri);

            // Add our custom headers
            if (requestHeader != null)
            {
                foreach (var item in requestHeader)
                {
                    requestMessage.Headers.Add(item.Key, item.Value);
                }
            }
            // Add request body
            if (data != null)
            {
                byte[] array = Encoding.Unicode.GetBytes(data);
                requestMessage.Content = new ByteArrayContent(array);
            }
            // Send the request to the server
            try
            {
                using (HttpResponseMessage response = await client.SendAsync(requestMessage))
                {
                    using (HttpContent content = response.Content)
                    {
                        string result = await content.ReadAsStringAsync();

                        T dataObj = JsonConvert.DeserializeObject <T>(result);
                        if (successCallback != null)
                        {
                            successCallback(dataObj);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (errorCallback != null)
                {
                    errorCallback(ex.Message);
                }
            }
            finally
            {
                client.Dispose();
            }
        }
예제 #2
0
        public HttpMethod ConvertToHttpMethod(RequestHTTPMethod method)
        {
            switch (method)
            {
            case RequestHTTPMethod.GET:
                return(HttpMethod.Get);

            case RequestHTTPMethod.DELETE:
                return(HttpMethod.Delete);

            case RequestHTTPMethod.POST:
                return(HttpMethod.Post);

            case RequestHTTPMethod.PUT:
                return(HttpMethod.Put);
            }
            return(HttpMethod.Get);
        }
예제 #3
0
 public async void SendRequestNative <T>(string uri, RequestHTTPMethod method, string data, Action <T> successCallback, Action <string> errorCallback = null)
 {
     SendRequestNative <T> (uri, method, data, null, successCallback, errorCallback);
 }
예제 #4
0
 public async void SendRequestNative(string uri, RequestHTTPMethod method, Dictionary <string, string> requestHeaders, Action <string> successCallback = null, Action <string> errorCallback = null)
 {
     SendRequestNative(uri, method, null, requestHeaders, successCallback, errorCallback);
 }
예제 #5
0
 public async void SendRequestNative(string uri, RequestHTTPMethod method, Action <string> successCallback = null, Action <string> errorCallback = null)
 {
     SendRequestNative(uri, method, null, null, successCallback, errorCallback);
 }