C#从字符串创建cookie并发送它

时间:2013-07-11 13:25:04

标签: c# http post cookies header

我想向HTTP服务器发出POST请求,但我需要在请求中“包含”一个cookie,我有cookie但我不知道如何搞乱cookie容器

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.Accept = "text/javascript, text/html, application/xml, text/xml, */*";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.Host = "url.com";
request.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11";
request.Referer = "http://url.com";
request.Headers.Add("X-Requested-With", "XMLHttpRequest");
request.Headers.Add("X-Prototype-Version", "1.7");
request.Headers.Add("Accept-Encoding: gzip, deflate");

这是一个示例cookie:

  

Cookie recentVisitedAppHubs = 233450%2​​C231430%2C48110%2C45760;   语言=西班牙语; strInventoryLastContext = 440_2;   __utma = 268881843.118202637.1372069740.1373472452.1373473085.10; __utmb = 268881843.21.10.1373473085; __utmz = 268881843.1373473085.10.4.utmcsr =谷歌| utmccn =(有机)| utmcmd =有机| utmctr =(未%20provided);   rgTopicView_General_4312225 =%7B%22828934913396342649%22%3A%221373450285%22%2C%22846939615003500718%22%3A1373473557%7D;   的timezoneoffset = 7200,0;的sessionid = NDExNjE1NDE5;   登录= 765611979917322708A9C768; steamRememberLogin = 76561197991732272;   __utma = 268881843.118202637.1372069740.1373472452.1373473085.10; __utmb = 268881843.22.10.1373473085; __utmc = 268881843; __utmz = 268881843.1373473085.10.4.utmcsr =谷歌| utmccn =(有机)| utmcmd =有机| utmctr =(未%20provided)

但我不知道如何将该cookie转换为Cookie容器,然后将其添加到请求中。     request.CookieContainer = cookie;

2 个答案:

答案 0 :(得分:3)

//build uri and cookie
Uri uri = new Uri("domain");
Cookie cookie = new Cookie("name", "value");

//build request
HttpWebRequest request = WebRequest.Create("domain") as HttpWebRequest;
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(uri, cookie);

资源:

答案 1 :(得分:1)

String CookieStr = "recentlyVisitedAppHubs=233450%2C231430%2C48110%2C45760; 
Language=spanish; strInventoryLastContext=440_2";
CookieContainer cookiecontainer = new CookieContainer();
string[] cookies = CookieStr.Split(';');
foreach (string cookie in cookies)
   cookiecontainer.SetCookies(new Uri("http://url.com"), cookie);
request.CookieContainer = cookiecontainer;