/// <summary> /// Downloads the data. /// </summary> /// <param name="url">The URL.</param> /// <param name="httpMethod">The HTTP method.</param> /// <param name="requestData">The request data.</param> /// <param name="requestEncoding">The request encoding.</param> /// <param name="callback">The callback.</param> /// <param name="userState">State of the user.</param> /// <returns></returns> /// <remarks></remarks> public static AsyncResult DownloadDataAsync(string url, HttpMethod httpMethod, string requestData, Encoding requestEncoding, AsyncDataCallback callback, object userState) { if (httpMethod == HttpMethod.POST) { return(DownloadDataAsync(new Uri(url), httpMethod, requestEncoding.GetBytes(requestData), callback, userState)); } if (!url.Contains("?") && !string.IsNullOrEmpty(requestData)) { url = url + "?" + HttpUtility.ParseQueryString(requestData, requestEncoding); } else if (url.Contains("?") && !string.IsNullOrEmpty(requestData)) { url = url + "&" + HttpUtility.ParseQueryString(requestData, requestEncoding); } return(DownloadDataAsync(new Uri(url), httpMethod, new byte[] {}, callback, userState)); }
/// <summary> /// Downloads the data. /// </summary> /// <param name="url">The URL.</param> /// <param name="httpMethod">The HTTP method.</param> /// <param name="requestData">The request data.</param> /// <param name="callback">The callback.</param> /// <param name="userState">State of the user.</param> /// <returns></returns> /// <remarks></remarks> public static AsyncResult DownloadDataAsync(Uri url, HttpMethod httpMethod, byte[] requestData, AsyncDataCallback callback, object userState) { var web = new WebClient(); web.UploadDataCompleted += WebUploadDataCompleted; web.DownloadDataCompleted += WebDownloadDataCompleted; var wrap = new Wrap(callback, userState); web.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9;ZHCN)"); if (httpMethod == HttpMethod.POST) { web.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); web.UploadDataAsync(url, "POST", requestData, wrap); } else { web.DownloadDataAsync(url, wrap); } return(new AsyncResult(web)); }
public Wrap(AsyncDataCallback callback, object userState) { Callback = callback; UserState = userState; }