我尝试使用System.net.http中新的.net 4.5 HttpClient。
我像这样设置我的客户
CookieContainer cookieJar = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler
{
CookieContainer = cookieJar,
AllowAutoRedirect = true
};
handler.UseCookies = true;
handler.UseDefaultCredentials = false;
HttpClient client = new HttpClient(handler as HttpMessageHandler);
然后我做client.GetAsync(url)
现在我正在检查响应并尝试获取以下帖子的cookie /会话值。
我尝试通过代码测试现有页面的登录方案......
如何在回复中获取Cookie信息?或者我走错了路? 任何解释都会很棒......
答案 0 :(得分:3)
cookie以标头的形式存在,标头是在客户端上创建cookie的指令。这些标题的形式为" Set-Cookie"作为实际标题,其值为" CookieTitle = {form encoded value}"。获得该cookie看起来像这样:
var cookieTitle = "MyCookieTitle";
var response = ... // get response object
var cookie = response.Headers.GetValues("Set-Cookie").First(x => x.StartsWith(cookieTitle));
这会得到标题的原始字符串,如下所示:
CookieTitle=this+is+the+value+of+the+cookie
答案 1 :(得分:0)
您可以查看HTTP响应的“Set-Cookie”标头。
答案 2 :(得分:0)
您无需获取Cookie并为下次POST重新指定它们。 HttpClient将为您做好准备。
只要您发布到的URL位于Cookie定义的路径中,cookie就会自动重新发送请求。
例如,如果您像这样创建cookie,
public class CookieController : ApiController
{
public HttpResponseMessage Get() {
var httpResponseMessage = new HttpResponseMessage();
var cookieHeaderValues = new List<CookieHeaderValue>();
cookieHeaderValues.Add(new CookieHeaderValue("foo","bar")
{Domain = "myhost",Path = "/"});
httpResponseMessage.Headers.AddCookies(cookieHeaderValues);
return httpResponseMessage;
}
}
对http://myhost/
以下任何网址的任何请求都会自动发送此Cookie。