我正在使用HttpWebRequest从ASP.NET MVC 2.0 Controller向同一域上的另一个站点发送一个post请求。我发送用户名和密码登录该网站。该站点使用表单身份验证。所以它设置了身份验证cookie。但是当我在HttpWebResponse对象中得到响应时,我在cookie容器或内部头文件中都找不到cookie(没有找到Cookie或Set-Cookie头)。让我在MVC控制器中添加一些代码片段:
HttpWebRequest httpRequest = (HttpWebRequest) WebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.ContentLength = postData.Length;
if (httpRequest.CookieContainer == null)
{
//httpRequest.CookieContainer = new CookieContainer();
}
httpRequest.Headers.Add(HttpRequestHeader.Cookie, "a=b");
var streamWriter = new StreamWriter(httpRequest.GetRequestStream());
streamWriter.Write(postData);
streamWriter.Close();
HttpWebResponse httpResponse = (HttpWebResponse) httpRequest.GetResponse();
string postBody = "";
using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream()))
{
postBody = reader.ReadToEnd();
}
return this.Content(postBody);
请注意,我在HttpWebRequest中没有同时使用cookie容器和cookie标头。
我不明白我在这里缺少什么来获取网络响应中的身份验证cookie。
答案 0 :(得分:0)
尝试使用
request.CookieContainer.Add(new Cookie("a", "b"));
而不是将Cookie添加为标题。