public void Post <T>(string resource, string jsonString, SendOrPostCallback onComplete, string authorization) where T : class, new() { string uriPath = resource; Uri uri = new Uri(uriPath, UriKind.Absolute); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; ApplyAuthorization(request, authorization); AsyncCallback readResponse = null; AsyncCallback writeRequest = null; writeRequest = new AsyncCallback( (e) => { request.ContentType = "application/json"; Stream stream = request.EndGetRequestStream(e); StreamWriter streamWriter = new StreamWriter(stream); streamWriter.Write(jsonString); streamWriter.Close(); stream.Close(); request.BeginGetResponse(readResponse, null); }); readResponse = new AsyncCallback( (e) => { HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(e); var stream = response.GetResponseStream(); var result = new RestConverter().ConstructObject <T>(stream); _synchronizationContext.Post(onComplete, result); }); request.BeginGetRequestStream(writeRequest, null); }
public void Get <T>(string resource, SendOrPostCallback onComplete, SendOrPostCallback onFailure, string authorization) where T : class, new() { string uriPath = resource; Uri uri = new Uri(uriPath, UriKind.Absolute); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); ApplyAuthorization(httpWebRequest, authorization); AsyncCallback done = new AsyncCallback( (e) => { string requestResource = resource; HttpWebRequest request = (HttpWebRequest)e.AsyncState; ApplyAuthorization(request, authorization); HttpWebResponse response; try { response = (HttpWebResponse)request.EndGetResponse(e); } catch (Exception ex) { if (onFailure != null) { _synchronizationContext.Post(onFailure, ex); return; } throw new InvalidOperationException("Unable to call: " + requestResource + ".", ex); } Stream stream = response.GetResponseStream(); var result = new RestConverter().ConstructObject <T>(stream); _synchronizationContext.Post(onComplete, result); }); httpWebRequest.BeginGetResponse(done, httpWebRequest); }