示例#1
0
 /// <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));
 }
示例#2
0
        /// <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));
        }
示例#3
0
 public Wrap(AsyncDataCallback callback, object userState)
 {
     Callback  = callback;
     UserState = userState;
 }