我正在開發一個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; –