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

chuanzhang5687 2013-11-20 04:41:09
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;
}
...全文
155 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuanzhang5687 2013-11-21
  • 打赏
  • 举报
回复
再顶一下
chuanzhang5687 2013-11-21
  • 打赏
  • 举报
回复
顶一下,求助!
chuanzhang5687 2013-11-21
  • 打赏
  • 举报
回复
再顶一下吧,进来的人顺便也顶一下,要不然我就不能顶了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧