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

IGN API Géoportail Discussion :

Problème lors de l'affichage d'un WMS


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 11
    Points
    11
    Par défaut Problème lors de l'affichage d'un WMS
    Bonjour,

    J'ai quelques problèmes pour afficher un WMS de Geoportail.
    Je m'explique :

    Lors de la tentative de récupération d'une carte WMS, j'obtiens le message d'erreur suivant : "The remote server returned an error: (401) Unauthorized."
    Or, il me semble que ma requête est bien formulée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var myUri = new Uri(GetRequestUrl(map.Envelope, map.Size));
                    var myWebRequest = System.Net.WebRequest.Create(myUri);
                    myWebRequest.Method = resource.Type;                
                    myWebRequest.Credentials = new System.Net.NetworkCredential("mylogin", "mypwd");
                    myWebRequest.UseDefaultCredentials = false;
    
                    if (_Proxy != null)
                        myWebRequest.Proxy = _Proxy;
    
                    try
                    {
    // ça plante ici
                        var myWebResponse = (System.Net.HttpWebResponse)myWebRequest.GetResponse();
    Ce qui est étrange, c'est que lorsque je tente d'afficher directement dans le browser ma requête, celle-ci passe.
    Le browser me demande mon login / pwd (le même que celui que j'ai renseigné dans mon code, et l'image s'affiche bien :

    Exemple d'url : https://gpp3-wxs.ign.fr/macle/geopor...=1.3.0&Styles=
    Edit : le lien ne fonctionne pas, mais c'est normal, j'ai remplacé ma clé pour plus de sécurité...

    Par avance merci pour votre aide,

    P. Martin.

  2. #2
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    je suppose à la lecture du code fourni que vous attaquez le service WMS depuis un environnement .NET.

    Je ne suis pas un spécialiste de cet environnement), mais ce que je peux vous dire relativement au service WMS est que l'authentification par login/mot de passe se fait en mode Basic, ce qui ne semble pas être spécifié dans votre code.

    Une recherche google m'a fait trouver ici cet exemple de code qui semble utiliser le même genre de classes et spécifie le mode d'authentification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    NetworkCredential myCred = new NetworkCredential(
    	SecurelyStoredUserName,SecurelyStoredPassword,SecurelyStoredDomain);
    
    CredentialCache myCache = new CredentialCache();
    
    myCache.Add(new Uri("www.contoso.com"), "Basic", myCred);
    myCache.Add(new Uri("app.contoso.com"), "Basic", myCred);
    
    WebRequest wr = WebRequest.Create("www.contoso.com");
    wr.Credentials = myCache;
    En espérant que ça puisse vous aider.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour votre réponse,

    J'ai effectué les adaptations conformément à vos instructions, malheureusement cela ne fonctionne toujours pas et j'obtiens toujours le même message d'erreur.
    Le language utilisé est bien le C# .NET.

    Voici le code "adapté" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    var myUri = new Uri(GetRequestUrl(map.Envelope, map.Size));
                    var myWebRequest = System.Net.WebRequest.Create(myUri);
                    myWebRequest.Method = resource.Type;
                    myWebRequest.Timeout = _TimeOut;
    
                    System.Net.NetworkCredential myCred = new System.Net.NetworkCredential("login", "pwd");
                    System.Net.CredentialCache myCache = new System.Net.CredentialCache();
    
                    myCache.Add(myUri, "Basic", myCred);
                    // utilisation de l'url abrégée pour être sûr
                    myCache.Add(new Uri("http://gpp3-wxs.ign.fr/"), "Basic", myCred);
                    // essayé avec et sans, sans succès
                    myWebRequest.UseDefaultCredentials = false;
                    myWebRequest.Credentials = myCache;
    
                    if (_Proxy != null)
                        myWebRequest.Proxy = _Proxy;
    
                    try
                    {
                        var myWebResponse = (System.Net.HttpWebResponse)myWebRequest.GetResponse();
    Je vais pousser un peu mes recherches... cependant, lors de la création de mon NetworkCredentials, je ne spécifie qu'un login / user, sans spécifier de domaine. Je procède de la sorte car lorsque j'utilise la même url via un browser, je ne spécifie pas de domaine et ça fonctionne.

    Y a t'il un domaine "caché" ?

    Par avance merci pour votre aide.

  4. #4
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    il n'y a pas de domaine caché. Par contre, en première analyse, je vois que indiquez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myCache.Add(new Uri("http://gpp3-wxs.ign.fr/"), "Basic", myCred);
    alors que vous attaquez le service en https.

    Peut-être une piste ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    Visiblement, c'était bien ça.
    Bien vu !

    Je vais refaire quelques tests avant de le mettre en résolu, mais j'ai déjà eu une map qui c'est affichée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/02/2010, 12h00
  2. problème lors d'un affichage!
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2007, 16h04
  3. problème lors de l'affichage des images
    Par cari dans le forum Langage
    Réponses: 24
    Dernier message: 10/11/2006, 11h34
  4. [CSS] Problème lors de l'affichage d'une infobulle
    Par nais_ dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 14/09/2006, 09h59

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