IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

[10.4.2] Client REST et WSL


Sujet :

Web & réseau Delphi

  1. #1
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut [10.4.2] Client REST et WSL
    Bonjour à toutes et à tous,

    Je dois développer un client REST sous Delphi 10.4.2. Pour mes tests, on m'a mis à disposition une version de démo du serveur, sur une machine virtuelle Ubuntu installée dans WSL
    Lorsque j'accède à l'url http://leserveur.localhost via mon navigateur: aucun problème (Edge et Firefox)
    En revanche, lorsque je tente la connexion à partir de mon code, j'ai "Erreur d'envoi des données: (12007) l'adresse ou le nom du serveur n'a pas pu être résolu"
    Une recherche sur le web indique que ce serai dû au pare-feu: j'ai autorisé l' application en entrée/sortie sans succès (je n'ai pas le droit de désactiver complètement le pare-feu pour mes tests).
    J'ai également exécuté une série de commandes pour fair un reset du cache DNS (ou quelque chose du genre ) sans plus de succès.
    Par acquis deconsience, j'ai remplacé TRESTClient par TNeTHTTPClient: pas mieux
    J'ai essayé avec TIdHTTP: j'ai l'erreur 11001 (host not found)
    En désespoir de cause, j'ai essayé un TWebBrowser: impossible d'afficher la page

    Quelqu'un aurait-il une piste?

    Edit: en recherchant sur l'erreur TidHTTP 11001, j'ai vu que ça peut être causé par un proxy. J'ai installé firefox "from scratch", sans configurer de proxy et l'url est accessible.
    Est-ce qu'il pourrait récupérer le proxy de façon "transparente" directement auprès de windows?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Comment réagit Postman

    WSL, avec ou sans docker, quel mappage pour le réseau virtuel ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Postman réagit normalement.
    Hier, j'avais oublié de préciser que cUrl fonctionne aussi normalement
    Je n'ai pas trop d'info sur la wsl (ni les connaissances linux )
    Je sais qu'il y a un docker...
    Le fichier .wslconfig qui se trouve dans mon dossier "user" de windows est vide.

  4. #4
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Problème résolu.
    Il semblerait que que les composants Delphi utilisent des implémentations internes pour la résolution de DNS. Dans le cas de WSL, il y a toute une "tambouille" interne à Windows qui fait que l'accès "direct" est compliqué.
    Au lieu de renseigner TRESTClient.baseURL avec "http://monserveur.localhost", il faut mettre l'IP de la machine WSL et passer l'host en header comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    restclient1.BaseURL:='http://x.x.x.x';
    restclient1.AddParameter('Host','monserveur.localhost',TRestRequestParameterKind.pkHTTPHEADER)  ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/09/2014, 13h38
  2. Réponses: 0
    Dernier message: 27/05/2013, 16h38
  3. créer un Client REST JAX-RS appelant un service web PHP
    Par paladin972 dans le forum Services Web
    Réponses: 0
    Dernier message: 16/04/2012, 17h59
  4. Générer un Client REST à partir du WADL
    Par yashiro dans le forum Services Web
    Réponses: 0
    Dernier message: 06/12/2011, 17h34
  5. un client reste à l'écoute d'un serveur java ?
    Par ja1985va dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/01/2011, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo