C# [Résolu] WebRequest qui prend tout son temps.

Inscrit
27 Aout 2012
Messages
264
Reactions
0
#1
Hello !

Pour passer le temps, j'me suis dit que j'allais faire un créateur de comptes en WebRequest.
Comme toujours, j'passe des heures à comprendre et finalement c'était tout con, mais bon, j'apprends doucement.

J'ai donc fait un tout petit début, une simple requête POST vers un fichier JSON censé me retourner le token de session pour la suite.
Tout va bien, je reçois ma réponse, mais j'ai simplement le temps d'aller faire le tour du quartier avant de l'avoir. Je m'explique.

Tout ce que je fais, je créée une WebRequest, j'envoie une requête en POST, j'attend la réponse et je l'affiche, rien de plus simple.
Pourtant, il faut presque compter 20 secondes pour que tout cela soit fait. Incroyable.
J'ai donc mit en place quelques petits benchmarks rapides pour savoir d'où ça venait exactement, et voici le résultat :


Y'a de quoi se poser des questions en gros.
À titre de comparaison, un autre créateur de comptes fonctionnant (je pense) sur le même principe fait tout ça, l'envoi des premiers identifiants et la récupération du captcha en 1 seconde.
Quand on voit le benchmark, on se dit que ça vient forcément de chez eux, mais comment ça se fait qu'on a une telle différence (1 seconde -> 20 secondes) ?

Voici le bout de code que j'ai actuellement :
Code:
try
{
    Random random = new Random();
    int randomNumber = random.Next(0, 1000);
 
    string postData = "{\"id\":" + randomNumber + ",\"method\":\"GetSteps\",\"params\":{\"lk\":null,\"sReferer\":\"https://secure.dofus.com/fr/creer-un-compte\",\"sFormId\":\"registerformincluded\",\"sLang\":\"fr\",\"bFullMode\":\"0\",\"aUnRequired\":[],\"aTemplates\":[]}}";
    byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                 
    WebRequest request = WebRequest.Create("https://secure.dofus.com/api/ankama/register.json");
 
    request.Method = "POST";
    request.ContentType = "application/json; charset=utf-8";
    request.ContentLength = byteArray.Length;
                 
    Stream dataStream = request.GetRequestStream();
 
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();
                 
    WebResponse response = request.GetResponse();
                 
    this.Log(((HttpWebResponse)response).StatusDescription, Color.Green);
                 
    dataStream = response.GetResponseStream();
                 
    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd();
                 
    this.Log(responseFromServer, Color.Empty);
                 
    reader.Close();
    dataStream.Close();
    response.Close();
}
catch (Exception Ex)
{
    this.Log(Ex.Message, Color.Red);
}
Quelqu'un a des explications ?

Merci d'avance !
 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#2
Re: WebRequest qui prend tout son temps.

J'imagine que quand tu le fais à la main cela ne te prends pas 20 secondes?
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#3
Re: WebRequest qui prend tout son temps.

Si j'appelle moi-même la page JSon que j'appelle dans mon code, ça prend 0.5 seconde oui :).

Edit : Code actuel ajouté.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#4
Haut Bas