Je développe une application wpf C# qui a une fonctionnalité de connexion à mon site Web et de téléchargement du fichier. Ce site a un attribut Authorize sur son action. J'ai besoin de 2 cookies pour pouvoir télécharger le fichier, le premier cookie est pour moi pour me connecter, le deuxième cookie (qui est fourni après une connexion réussie) est pour moi le téléchargement du fichier. Donc je suis venu avec le flux de garder mes cookies après mon httpwebrequest/httpwebresponse. Je regarde mon flux d'affectation comme peut-être c'est le problème. Voici mon code.C#: HttpWebRequest Les données POST ne fonctionnent pas
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();
}
}
}
vous n'avez pas mentionné le problème que vous rencontrez. Où échoue-t-il? –
il échoue donnant la réponse du httpwebrequest avec une méthode POST. il me donne une erreur 500. –
et pourquoi faites-vous cela?: paramètres.Length - = 1; –