Question

J'essaie de vous connecter à un site Web à l'aide de .NET 4.5 httpClient et recevez un cookie.Je casse juste avant de quitter l'essai et de vérifier le Cookiecontainer et il ne contient aucun cookie.La réponse renvoie un statut de 200 cependant.

private async void Login(string username, string password)
{
    try
    {
        Uri address = new Uri(@"http://website.com/login.php");
        CookieContainer cookieJar = new CookieContainer();
        HttpClientHandler handler = new HttpClientHandler()
        {
            CookieContainer = cookieJar
        };
        handler.UseCookies = true;
        handler.UseDefaultCredentials = false;
        HttpClient client = new HttpClient(handler as HttpMessageHandler)
        {
            BaseAddress = address
        };

        HttpContent content = new StringContent(string.Format("username={0}&password={1}&login=Login&keeplogged=1", username, password));
        HttpResponseMessage response = await client.PostAsync(client.BaseAddress, content);
    }

Je n'ai aucune idée de la raison pour laquelle cela ne fonctionne pas.Cela fonctionne bien lorsque j'essaie le style .NET 4.

Était-ce utile?

La solution

Utilisez FormurlencodedContent au lieu de stringContent avec string.format .Votre code n'échappe pas correctement au nom d'utilisateur et au mot de passe.

HttpContent content = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("username", username),
    new KeyValuePair<string, string>("password", password),
    new KeyValuePair<string, string>("login", "Login"),
    new KeyValuePair<string, string>("keeplogged", "1")
});

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top