我正在开发一个C#wpf应用程序,它具有登录到我的网站并下载文件的功能。这个网站的行为有一个授权属性。我需要2个cookie才能下载文件,第一个cookie用于登录,第二个cookie(成功登录后提供)用于下载文件。所以我提出了在我的httpwebrequest/httpwebresponse之后保留cookie的流程。我正在查看我的发布流程,因为这可能是问题所在。这是我的代码。C#:HttpWebRequest POST数据不工作
void externalloginanddownload()
{
string pageSource = string.Empty;
CookieContainer cookies = new CookieContainer();
HttpWebRequest getrequest = (HttpWebRequest)WebRequest.Create("login uri");
getrequest.CookieContainer = cookies;
getrequest.Method = "GET";
getrequest.AllowAutoRedirect = false;
HttpWebResponse getresponse = (HttpWebResponse)getrequest.GetResponse();
using (StreamReader sr = new StreamReader(getresponse.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
var values = new NameValueCollection
{
{"Username", "username"},
{"Password", "password"},
{ "Remember me?","False"},
};
var parameters = new StringBuilder();
foreach (string key in values.Keys)
{
parameters.AppendFormat("{0}={1}&",
HttpUtility.UrlEncode(key),
HttpUtility.UrlEncode(values[key]));
}
parameters.Length -= 1;
HttpWebRequest postrequest = (HttpWebRequest)WebRequest.Create("login uri");
postrequest.CookieContainer = cookies;
postrequest.Method = "POST";
using (var writer = new StreamWriter(postrequest.GetRequestStream()))
{
writer.Write(parameters.ToString());
}
using (WebResponse response = postrequest.GetResponse()) // the error 500 occurs here
{
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
string html = streamReader.ReadToEnd();
}
}
}
你还没有提到你有什么问题。它在哪里失败? –
它无法通过POST方法获取httpwebrequest的响应。它给了我一个错误500. –
和你为什么这样做?:parameters.Length - = 1; –