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

C# Discussion :

Requête HTTP GET Ok dans Postman, KO dans mon code [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut Requête HTTP GET Ok dans Postman, KO dans mon code
    Bonjour,
    J'essaye d'appeler une API SSO depuis mon code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    HttpClient client = new HttpClient();
                    client.BaseAddress = this.baseAddress;
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
     
                    HttpResponseMessage response = await client.GetAsync("contact/" + idContact);
                    ...
    Ce code me renvoie une exception :
    "Une erreur s'est produite lors de l'envoi de la demande."
    Inner exception : "La connexion sous-jacente a été fermée*: Une erreur inattendue s'est produite lors de l'envoi."
    Source : mscorlib

    Lorsque j'essaye d'envoyer la même requête directement avec Postman, cela fonctionne ( {{base_url}}/contact/12345 )
    C'est une requête GET sans paramètres, avec une Authorization de type "Bearer Token", et c'est tout !...

    Je suis en Framework 4.6.1.
    Pourriez-vous me dépanner svp ?

    Par avance merci

    Edit : j'ajoute que même en supprimant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
    le résultat est exactement le même : le problème ne semble pas venir de la manière de passer le token...

    J'ai également essayé d'ajouter ces lignes (trouvées sur un tuto) sans résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    On dirait un problème lié au protocole utilisé pour la sécurisation.
    Que donne comme résultat le code suivant ?*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HttpClient client = new HttpClient();
    client.BaseAddress = this.baseAddress;
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
     
    ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12;
    HttpResponseMessage response = await client.GetAsync("contact/" + idContact)
    Grosso modo, je suspect le serveur d'attendre une connexion sécurisée avec un protocole récent (Tls1.2). S'agissant d'un serveur SSO, cela semblerait tout à fait logique. Mais le programme client ne le propose pas (par exemple, juste Sslv3). Du coup, la connexion sécurisée est impossible faute de protocole en commun. J'ai rajouté une ligne pour activer le protocole Tls1.2, ce qui devrait permettre au client et au serveur de communiquer.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Bonjour François
    Magnifique, cette ligne permet bien au reste de fonctionner !
    Merci beaucoup pour ton aide
    Bonne journée

    Cordialement

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

Discussions similaires

  1. Problème d'envoi de deux requêtes HTTP 1.1 dans un même socket
    Par sousal dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 18/08/2011, 09h43
  2. Quelle requête HTTP pour lire dans un ZIP?
    Par Colon dans le forum Débuter
    Réponses: 1
    Dernier message: 18/09/2008, 18h54
  3. Requête HTTP, GET et POST
    Par sebxid dans le forum Débuter
    Réponses: 1
    Dernier message: 05/09/2008, 15h19
  4. Parser une requête HTTP/GET en c ! regex ?
    Par canard75 dans le forum C
    Réponses: 14
    Dernier message: 06/12/2005, 10h08
  5. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02

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