Example #1
0
        /// <summary>   
        /// 创建POST方式的HTTP请求   
        /// </summary>   
        /// <param name="url">请求的URL</param>   
        /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>   
        public static void CreatePostHttpResponse(string url, IDictionary<string, string> parameters, callbackResult callback)
        {
            //判断url不为空
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            //创建请求
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            //请求类型
            request.Method = "POST";
            //http 标头
            request.ContentType = "application/x-www-form-urlencoded";

            request.UserAgent = DefaultUserAgent;
            //参数
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                int i = 0;
                foreach (string key in parameters.Keys)
                {
                    //if (i > 0)
                    if (url.IndexOf("?") > -1)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("?{0}={1}", key, parameters[key]);
                    }
                    i++;
                }
                byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());

                //开始请求
                request.BeginGetRequestStream(new AsyncCallback((ia) =>
                {

                    HttpWebRequest httpWebRequest = (HttpWebRequest)ia.AsyncState;

                    using (Stream stream = httpWebRequest.EndGetRequestStream(ia))
                    {
                        stream.Write(data, 0, data.Length);
                    }
                    request.BeginGetResponse((x) => {

                        HttpWebRequest req = x.AsyncState as HttpWebRequest;
                        string responseStr = string.Empty;

                        try
                        {
                            // 获取请求
                            using (HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(x))
                            {
                                // Get the response stream  
                                StreamReader reader = new StreamReader(response.GetResponseStream());
                                responseStr = reader.ReadToEnd(); 
                            }
                            callback(responseStr);
                        }
                        catch (Exception)
                        {
                            
                            throw;
                        }
                       
                    
                    }, request);

                }), request);
            }
            else
            {
                request.BeginGetResponse((ia) =>
                {

                    HttpWebRequest req = ia.AsyncState as HttpWebRequest;
                    string responseStr = string.Empty;

                    // 获取请求
                    using (HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(ia))
                    {
                        // Get the response stream  
                        StreamReader reader = new StreamReader(response.GetResponseStream());
                        responseStr = reader.ReadToEnd();

                    }
                    callback(responseStr);
                }, request);
            }
        }
Example #2
0
        /// <summary>
        /// get请求
        /// </summary>
        /// <param name="url">url</param>
        /// <param name="parameters">参数</param>
        /// <param name="callback">会调</param>
        public static void CreateGetHttpResponse(string url, IDictionary<string, string> parameters, callbackResult callback)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                int i = 0;
                foreach (string key in parameters.Keys)
                {
                    if (url.IndexOf("?")>-1)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("{0}={1}", key, parameters[key]);
                    }
                    i++;
                }
                url += buffer.ToString();
            }
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.BeginGetResponse((ia) =>
            {
                string response = null;
                Stream stream = null;
                try
                {
                    //获取异步操作返回的的信息   
                    HttpWebRequest httpWebRequest = (HttpWebRequest)ia.AsyncState;
                    //结束对 Internet 资源的异步请求  
                    WebResponse webResponse = httpWebRequest.EndGetResponse(ia);
                    stream = webResponse.GetResponseStream();
                    using (StreamReader sr = new StreamReader(stream))
                    {
                        response = sr.ReadToEnd();
                    }
                    callback(response);

                }
                catch (Exception)
                {
                    
                }
                finally
                {
                    if (stream != null)
                    {
                        stream.Close();
                    }
                } 
            }, request);
        }