Ejemplo n.º 1
0
        static public void AsynPost(string url, byte[] data, ResponseCallback callback, object state, CookieCollection cookie)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            if (cookie != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookie);
            }
            request.AllowAutoRedirect = true;
            request.Method            = "POST";
            request.ContentType       = "application/x-www-form-urlencoded";
            request.ContentLength     = data.Length;

            AsynResp resp = new AsynResp
            {
                Request  = request,
                Callback = callback,
                Response = new ResponseObject
                {
                    State = state
                }
            };
            AsynRequestStream ars = new AsynRequestStream
            {
                Data = data,
                Resp = resp
            };

            request.BeginGetRequestStream(new AsyncCallback(RequestStreamCallback), ars);
        }
Ejemplo n.º 2
0
 private static void DoUserCallback(AsynResp ar)
 {
     if (ar.Callback != null)
     {
         ThreadPool.QueueUserWorkItem(new WaitCallback(UserCallback), ar);
     }
 }
Ejemplo n.º 3
0
        private static void RespCallback(IAsyncResult ir)
        {
            AsynResp ar = (AsynResp)ir.AsyncState;

            try
            {
                HttpWebResponse resp = (HttpWebResponse)ar.Request.EndGetResponse(ir);
                ar.Request = null;
                if (ar.Callback != null)
                {
                    ar.Response.Resp = resp;
                    ar.RespStream    = resp.GetResponseStream();
                    ar.Contents      = new ArrayList();
                    ar.Current       = new byte[1024];
                    if (ar.RespStream != null)
                    {
                        ar.RespStream.BeginRead(ar.Current, 0, ar.Current.Length,
                                                RespReadCallback, ar);
                    }
                }
            }
            catch (Exception)
            {
                DoUserCallback(ar);
            }
        }
Ejemplo n.º 4
0
        private static void UserCallback(object o)
        {
            AsynResp ar = (AsynResp)o;

            try
            {
                ar.Callback(ar.Response);
            }
            catch
            { }
            if (ar.Response.Resp != null)
            {
                ar.Response.Resp.Close();
            }
        }
Ejemplo n.º 5
0
        private static void UserCallback(object o)
        {
            AsynResp ar = (AsynResp)o;

            try
            {
                ar.Callback(ar.Response);
            }
            catch (Exception e)
            {
                //LogHelper.WriteLog(typeof(HttpWebAsk), LogStatusLevel.ERROR, e.Message);
            }
            if (ar.Response.Resp != null)
            {
                ar.Response.Resp.Close();
            }
        }
Ejemplo n.º 6
0
        private static void RespReadCallback(IAsyncResult ir)
        {
            AsynResp ar = (AsynResp)ir.AsyncState;

            try
            {
                int readed = ar.RespStream.EndRead(ir);
                if (readed >= ar.Current.Length)
                {
                    ar.Contents.Add(ar.Current);
                    ar.Current = new byte[1024];
                    ar.RespStream.BeginRead(ar.Current, 0, ar.Current.Length,
                                            new AsyncCallback(RespReadCallback), ar);
                    return;
                }

                int length = ar.Contents.Count * 1024 + readed;
                if (length > 0)
                {
                    ar.Response.Content = new byte[length];
                    int index = 0;
                    foreach (byte[] bs in ar.Contents)
                    {
                        Array.Copy(bs, 0, ar.Response.Content, index, bs.Length);
                        index += bs.Length;
                    }

                    if (readed > 0)
                    {
                        Array.Copy(ar.Current, 0, ar.Response.Content, index, readed);
                    }
                }
                ar.Contents = null;
                ar.Current  = null;
                ThreadPool.QueueUserWorkItem(new WaitCallback(UserCallback), ar);
            }
            catch (Exception e)
            {
                //LogHelper.WriteLog(typeof(HttpWebAsk), LogStatusLevel.ERROR, e.Message);
                DoUserCallback(ar);
            }
        }
Ejemplo n.º 7
0
        private static void RespReadCallback(IAsyncResult ir)
        {
            AsynResp ar = (AsynResp)ir.AsyncState;

            try
            {
                int readed = ar.RespStream.EndRead(ir);
                if (readed >= ar.Current.Length)
                {
                    ar.Contents.Add(ar.Current);
                    ar.Current = new byte[1024];
                    ar.RespStream.BeginRead(ar.Current, 0, ar.Current.Length,
                                            RespReadCallback, ar);
                    return;
                }

                int length = ar.Contents.Count * 1024 + readed;
                if (length > 0)
                {
                    ar.Response.Content = new byte[length];
                    int index = 0;
                    foreach (byte[] bs in ar.Contents)
                    {
                        Array.Copy(bs, 0, ar.Response.Content, index, bs.Length);
                        index += bs.Length;
                    }

                    if (readed > 0)
                    {
                        Array.Copy(ar.Current, 0, ar.Response.Content, index, readed);
                    }
                }
                ar.Contents = null;
                ar.Current  = null;
                ThreadPool.QueueUserWorkItem(UserCallback, ar);
            }
            catch (Exception)
            {
                DoUserCallback(ar);
            }
        }
Ejemplo n.º 8
0
        static public void AsynGet(string url, ResponseCallback callback, object state, CookieCollection cookie)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            if (cookie != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookie);
            }
            AsynResp resp = new AsynResp
            {
                Request  = request,
                Callback = callback,
                Response = new ResponseObject
                {
                    State = state
                }
            };

            request.BeginGetResponse(new AsyncCallback(RespCallback), resp);
        }
Ejemplo n.º 9
0
        private static void RespCallback(IAsyncResult ir)
        {
            AsynResp ar = (AsynResp)ir.AsyncState;

            try
            {
                HttpWebResponse resp = (HttpWebResponse)ar.Request.EndGetResponse(ir);
                ar.Request = null;
                if (ar.Callback != null)
                {
                    ar.Response.Resp = resp;
                    ar.RespStream    = resp.GetResponseStream();
                    ar.Contents      = new ArrayList();
                    ar.Current       = new byte[1024];
                    ar.RespStream.BeginRead(ar.Current, 0, ar.Current.Length,
                                            new AsyncCallback(RespReadCallback), ar);
                }
            }
            catch (Exception e)
            {
                //LogHelper.WriteLog(typeof(HttpWebAsk), LogStatusLevel.ERROR, e.Message);
                DoUserCallback(ar);
            }
        }