PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → httpRequête
httpRequête
Iniciado por vincent.papin, 25,feb. 2020 15:52 - 10 respuestas
Publicado el 25,febrero 2020 - 15:52
Bonjour à tous,

J'ai un soucis pour consommer un web service REST, c'est un web service très simple qui retourne un enregistrement en lui passant 1 paramètre (Identifiant) quand je test sur un navigateur ça fonctionne parfaitement, en revanche quand je test dans une appli WinDev j'ai une erreur 401 Unauthorized.

Auriez vous une idée de la raison pour laquelle je n'ai pas accès depuis une appli ?

Merci par avance.
Publicado el 25,febrero 2020 - 16:22
Le code dans l'appli WinDev :

h est un httpRequête
h..Méthode=httpGet
h..URL = sMonURL


r est un restRéponse = RESTEnvoie(h)
SI r..CodeEtat = 200 ALORS
Info(r.Contenu)
SINON
Info("Erreur"+r..CodeEtat, r..DescriptionCodeEtat)
FIN
Miembro registrado
189 mensajes
Publicado el 25,febrero 2020 - 17:11
Bonjour Vince,

Ton code semble bon.
Un 401 signifie que tu dois t'authentifier pour pouvoir accéder à la page voulue.

Essayer d'ajouter les identifiants:
h..Utilisateur = "xxxxx"
h..MotDePasse = "xxxxx"


Jean-Marc
Publicado el 26,febrero 2020 - 08:07
Merci pour ta réponse Jean-Marc, cela veut dire que l'authentification est automatique depuis les navigateur ?
Miembro registrado
189 mensajes
Publicado el 26,febrero 2020 - 10:12
Généralement, tant que tu n'as pas fermé le navigateur, l'identification n'est plus nécessaire, même si tu fermes l'onglet.
Il faut fermer complètement le navigateur pour qu'il te redemande de t'authentifier.
Publicado el 26,febrero 2020 - 15:08
Re,

Même en fermant le navigateur puis en ouvrant le l'URL le WebService est ok mais toujours pas depuis une appli :(
Publicado el 26,febrero 2020 - 15:39
Bonjour
vous devez ajouter l'identification à la variable de la requête http je crois !
Publicado el 26,febrero 2020 - 16:17
si ca fonctionne depuis le navigateur sans rien faire d'autre que de taper l'url et PAS depuis du code windev, ca peut venir de deux choses :

- problème d'Agent utilisateur... Essaye de passer la même valeur que ton navigateur qui fonctionne, dés fois que le webservice en question bloque la dessus
- http dans ton url au lieu de https (les navigateurs modernes essayent par défaut en https, ce qui n'est pas le cas de ton code, ou il faut que TU le précise)
Publicado el 26,febrero 2020 - 17:02
Merci pour vos réponses.
J'ai essayé en C# .NET et ça fonctionne et je pense que c'est du à la méthode CredentialCache.DefaultCredentials qui permet de récupérer les informations d’identification système de l’application.
Uri uri = new Uri("http://fr-nov-s-gtcgtb/GetInfoCollaborateur/VPA");
            WebClient client = new WebClient();
           client.Credentials = CredentialCache.DefaultCredentials;

            using (Stream data = client.OpenRead(uri))
            {
                using (StreamReader sr = new StreamReader(data))
                {
                    string result = sr.ReadToEnd();
                    textBox1.Text = result;
                    //Console.WriteLine(result);
                    //Console.ReadLine();
                }
            }


Donc en WinDev j'ai ajouté ces valeurs à ma variable httpRequete :
h..Utilisateur=""
h..MotDePasse=""

Mais rien y fait.

Connaissez vous l'équivalent du CredentialCache.DefaultCredentials en WinDev ?
Publicado el 26,febrero 2020 - 17:13
Est ce qu'il ne faudrait pas ajouter ces informations dans le header ?
Publicado el 02,marzo 2020 - 14:01
Problème résolu, sur le serveur, IIS était configuré en Authentification intégrée de Windows, merci pour vos réponses