【发布时间】:2011-05-02 01:13:02
【问题描述】:
我遇到了一个愚蠢的问题。我有一个返回初始化请求的方法,该请求可用于在某些外部网站上登录。
protected HttpWebRequest GetLoginRequest()
{
const string url = "https://someurl.com/login";
var queryParams = new ArrayList
{
String.Format("{0}={1}", "email", Email),
String.Format("{0}={1}", "password", DecryptedPassword)
};
var parameters = String.Join("&", (String[])queryParams.ToArray(typeof(String)));
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = parameters.Length;
request.Timeout = 10000;
var streamWriter = new StreamWriter(request.GetRequestStream());
streamWriter.Write(parameters);
streamWriter.Close();
return request;
}
我从代码中的两个位置调用此方法。第一次调用是这样的:
var request = GetLoginRequest();
var response = (HttpWebResponse)request.GetResponse();
第二个有 CookieContainer 分配给请求:
var cookieContainer = new CookieContainer();
var request = GetLoginRequest();
request.CookieContainer = cookieContainer;
var response = (HttpWebResponse)request.GetResponse();
因为我需要存储 CookieContainer。
问题是仅在第二种情况下执行登录。在第一种情况下,我从登录页面得到响应。我检查了所有案例,两个结果请求似乎相同。我建议它是特定于目标站点的,但我仍然没有看到任何原因。
你能解释一下是什么原因吗,因为这种行为对我来说似乎很不明显。
【问题讨论】:
-
这个问题似乎与标题完全无关
-
对不起 - 首先我认为问题在于内容类型已通过,但我忘了更改标题。
标签: c# cookies httpwebrequest