API et méthode LOGIN

Bonsoir à tous,
J'utilise une API dans une application, et une des méthodes LOGIN permet de se connecter à un compte.
Le problème est que lorsque les mots de passe contiennent des caractères spéciaux comme %,+,/ etc... cela plante.
Quels tests faut-il mettre en place pour éviter ce problème ?
Merci.

Mots clés:

Réponses

  • muqaddarmuqaddar Administrateur

    Il faudrait voir où ça plante et pourquoi.
    C'est l'application qui plante ?
    L'API ?
    L'API qui renvoie un truc qui fait planter l'application ?

    De loin, ça ressemble à un problème d'encodage d'URL.

  • en fait c'est au niveau de l'instruction NSURL que ça plante, de mémoire c'est ce code (je suis au boulot donc je n'ai pas le code source devant moi avant ce soir):

       let string = "http://...."
       let url = NSURL (contentofs: string) 
    
       parser.parse() 
    

    merci

  • LarmeLarme Membre
    décembre 2018 modifié #4

    Percent Escape. C'est ce que tu devrais utiliser, non ?

    Par contre, bizarre de passer des mots de passe dans l'URL.

    Et si tu es en Swft3+, préfères URL à NSURL.

  • OK merci je vais tester,
    en fait c'est la méthode LOGIN de l'API qui est faite de cette façon :
    /api/v2.asmx/login?apiKey=string&username=string&password=string

    et un utilisateur me dit que le mot de passe suivant ne passe pas (il l'a changé depuis) :
    dJ/R+bfD%q9C8A5u}hCD

  • Comme le dit @muqaddar il faudrait voir précisément le message d'erreur qui t'est retourné. Par contre, pour ton problème, je me demande si ça ne vient pas du fait que l'URL contient des caractères interdis. Par exemple, le caractère "}" devrait être remplacé par "%7D". Je ne sais pas si le problème vient effectivement de là mais ce qui est certain c'est qu'en l'état, ton URL ne sera pas correctement formée.

    Ta version :

    https://host/api/v2.asmx/login?apiKey=string&username=string&password=dJ/R+bfD%q9C8A5u}hCD
    

    La version encodée :

    https://host/api/v2.asmx/login?apiKey=string&username=string&password=dJ/R%2BbfD%25q9C8A5u%7DhCD
    
Connectez-vous ou Inscrivez-vous pour répondre.