当前位置:编程学习 > C#/ASP.NET >>

windows mobile 6 通过httpwebrequest 调用web api 接口获取cookie的问题

windows mobile 6 通过httpwebrequest 调用web api 接口获取cookie的问题,
报错信息为:此请求需要数据缓冲以便成功进行身份验证或重定向。


首先与调用接口这块,验证时通过了,但是获取response的时候,由于 compact netframework 类库里,封装的 httpwebrequest 和httpwebresponse 都没有将cookie封装进去,所以在 request.GetResponse() 的时候,转换不了,因为接口返回的流里面,是有cookie的。

现在问题就是,怎么通过httpwebrequest 获取这个cookie

下面我贴出主代码。

    public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int? timeout, string userAgent,
            Encoding requestEncoding)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            if (requestEncoding == null)
            {
                throw new ArgumentNullException("requestEncoding");
            }

            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

            request.Method = "POST";

            request.Headers.Add("X_REG_CODE", "288a633ccc1");//注册码
            request.Headers.Add("X_MACHINE_ID", "a306b7c51254cfc5e22c7ac0702cdf87");//硬件标识号
            request.Headers.Add("X_REG_SECRET", "de308301cf381bd4a37a184854035475d4c64946");//系统标为符
            request.Headers.Add("X_STORE", "0001");//
             request.Headers.Add("X_BAY", "0001-01"); //工位
            request.Headers.Add("X-Requested-With", "XMLHttpRequest");
            request.ContentType = "application/x-www-form-urlencoded";

           //request.ContentType = "multipart/form-data";
            request.Headers.Add("Accept-Language", "zh-CN");
            request.Headers.Add("Accept-Encoding", "gzip, deflate");
            request.Accept = "*/*";

            request.AllowWriteStreamBuffering = false;
            request.KeepAlive = true;
  if (!string.IsNullOrEmpty(userAgent))
            {
                request.UserAgent = userAgent;
            }
            else
            {
                request.UserAgent = DefaultUserAgent;
            }

            if (timeout.HasValue)
            {
                request.Timeout = timeout.Value;
            }
            //如果需要POST数据  
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                int i = 0;
                foreach (string key in parameters.Keys)
                {
                    if (i > 0)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("{0}={1}", key, parameters[key]);
                    }
                    i++;
                }
                byte[] data = requestEncoding.GetBytes(buffer.ToString());


                request.ContentLength = data.Length;
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }               
            }
            HttpWebResponse res;
            try
            {
//错误就在下面这句,报错 此请求需要数据缓冲以便成功进行身份验证或重定向。
                res = (HttpWebResponse)request.GetResponse();

              
            }
            catch (WebException ex)
            {
                res = (HttpWebResponse)ex.Response;

            }

            return res;
        }
windows mobile   httpwebrequest  cookie --------------------编程问答-------------------- 顶一下,求助! --------------------编程问答--------------------
再顶一下 --------------------编程问答-------------------- 再顶一下吧,进来的人顺便也顶一下,要不然我就不能顶了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,