static public async Task<Response> Send_OTHERS(this Request request, Action<long[]> onProgress = null) { Response response = null; try { #if NET45 var req= (HttpWebRequest)WebRequest.Create(request.Uri); #else var req= new HttpWebRequest(request.Uri); #endif req.Method = request.Method; req.AddHeaders(request.Headers); if (request.Content != null && request.Content.Length > 0) { var reqStream = Task.Factory.FromAsync<Stream>(req.BeginGetRequestStream, req.EndGetRequestStream, null).Result; request.Content.CopyTo(reqStream); reqStream.Flush(); } //var res = (HttpWebResponse) await Task.Factory.FromAsync<WebResponse>(req.BeginGetResponse, req.EndGetResponse, null); // weird problems with some datasoures, replace the above line for the following; this should not block UI cause the public interfaces // are async var wr = Task.Factory.FromAsync<WebResponse>(req.BeginGetResponse, req.EndGetResponse, null).Result; var res = (HttpWebResponse) wr; var resStream = default(Stream); if (res.ContentLength > 0) { resStream = res.GetResponseStream(); } response = await Response.Create(res.StatusCode, resStream); foreach (var name in res.Headers.AllKeys) { response.Headers.Add(name, res.Headers[name]); } return response; } catch (Exception e) { throw e; } }