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

Services Web Discussion :

[VB.NET | WebServices | VS 2008 ] Comment utiliser les paramètres d'entrée d'un webservices


Sujet :

Services Web

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [VB.NET | WebServices | VS 2008 ] Comment gérer l'authentification http | notion d'authentification
    Bonjour,

    Je suis en train de découvrir les WebServices, et j'essaye de comprendre comment les utiliser dans un projet vb.net.

    Donc pour le commencement je me suis inspirer de ce tutoriel :
    http://morpheus.developpez.com/webservicescsharp/

    Même si il est écrit pour un développement en CSharp, la manipulation est similaire pour le VB.NET :

    J'ai donc rajouter une référence de service :

    Dans l'explorateur de solution :
    - Clic droit sur mon projet
    - Ajouter une référence de Service

    Dans champ adresse, j'ai indiqué l'adresse WSDL du Webservices que je souhaite utiliser :

    -http://[nom_de_l_appli_sur_intranet].[site_de_production].[nom_de_ma_societe].com:8089/open/services/AbsenceFileService?wsdl
    -J'ai aussi modifier aussi l'espace de nom

    Après avoir ajouter ma référence, j'ai crée un objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TestWebServices As [Espace_de_Nom].AbsenceFile = New [Espace_de_Nom].AbsenceFile
    Je voulais déjà savoir si j'utilise la bonne méthodologie pour accèder au WebServices.

    J'ai une petite question, mon WebServices à des paramètres d'entrée facultatif. Et j'aimerai savoir comment utiliser ces derniers .

    Je continue mes recherches sur les WebServices.

    Je suis preneur de toute remarque | Tips | lien vers tuto .

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour

    Je patauge un peu avec l'exploitation de mon web service.

    J'ai trouvé ce petit tutorial :

    http://www.codeguru.com/vb/vb_intern...icle.php/c4813

    Cependant il y a encore une notion que je n'arrive pas encore à saisir correctement.

    dans le code du tutorial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'declare variable for the google search service
    Dim MyService as Google.GoogleSearchService = new Google.GoogleSearchService ()
    J'ai bien compris que le

    correspond au namespace qui est definit par le renommage.

    par contre je n'arrive pas à savoir comment est définit le type présent après :

    .

    En effet dans mon code suite à l'ajout de la référence à mon Webservice j'obtiens une arborescence du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    - WS[nom_de_appli_WS] => espace de nom
       |___AbsenceFileService.wsdl
       |___configuration.svcinfo
       |___configuration91.svcinfo
       |___Reference.svcmap
               |___[mon_projet].[espace_de_nom_WS].AbsenceFile.datasource
               |___Reference.vb
    Je devrai donc normallement pourvoir définir mon Objet de type WebServices de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim testWebServices as [espace_de_nom].AbsenceFileService = new [espace_de_nom].AbsenceFileService
    Le type de l'objet correspond-il bien au nom du fichier .wsdl?

    Car je n'arrive pas à définir cette objet de base pour manipuler mon webservice.

    Il m'indique qu'il

    Type [espace_de_nom].AbsenceFileService non définit
    Remarque quand j'effectue l'ajout de référence au webservices j'utilise cette adresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://[nom_de_l_appli_sur_intranet].[site_de_production].[nom_de_ma_societe].com:8089/open/services/AbsenceFileService?wsdl
    Est-ce que le ? avant l'extension peux poser problème ?

    De plus quand je clic sur aller à, il me demande une authentification, que je ne connais pas pour l'instant, mais qui ne semble pas bloquer le processus d'ajout de la référence, car si je clic sur annuler, il semble quand même m'ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              AbsenceFileService
              |_AbsenceFileServicePortType
    et en cliquant sur AbsenceFileServicePortType, je vois bien les méthodes que propose le webservices.

    Est-ce que le fait de ne pas s'authentifier serai le problème?
    Ou est-ce que je cherche le type de l'objet du webservices au mauvaise endroit?

    désolé pour la longueur du post, j'ai juste essye de donner un maximum d'information sur ce que j'ai fait, en espérant que qqn lira mes observations pour me donner un ptit tuyau.

    Merci d'avance pour votre aide cordialement.

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour

    Donc voici le code que j'utilise actuellement :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub WebServices(ByVal datedebut As Date, ByVal datefin As Date)
            'déclaration de l'objet Webservices
            Dim testWebServices As WS[nom_de_mon_application].AbsenceFileServicePortType = New WS[nom_de_mon_application].AbsenceFileServicePortTypeClient
            'déclaration de l'objet qui récupérera la réponse à ma requête au webservice
            Dim responseFile As WS[nom_de_mon_application].exportAbsenceFilesLimitedToAPeriodResponse = New WS[nom_de_mon_application].exportAbsenceFilesLimitedToAPeriodResponse
            'déclaration de l'objet de requete au webservices
            Dim request As WS[nom_de_mon_application].exportAbsenceFilesLimitedToAPeriodRequest = New WS[nom_de_mon_application].exportAbsenceFilesLimitedToAPeriodRequest
            'définition des paramètres de la requête
            request.startDate = datedebut
            request.endDate = datefin
            'execution de la requete
            responseFile = testWebServices.exportAbsenceFilesLimitedToAPeriod(request)
        End Sub

    Comme je l'ai dit dans mon précédent post à l'ajout de la référence il me demande une authentification. Ne connaissant pas encore cette élément j'ai annulé la demande d'authentification, sans que cela ne semble gêner l'ajout de ma référence.

    Cependant à la compilation j'obtiens ce message d'erreur :

    erreur sur le webservices :
    La demande HTTP n’est pas autorisée avec un modèle d’authentification client « Anonymous ».
    L’en-tête d’authentification reçu du serveur était « Basic realm=""Bodet Realm"" ».
    Je voulais savoir ou est mon erreur et comment la régler

    Je suis en train de voir avec bodet quel serait ces codes d'authentifications.

    ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    J'ai récupéré les identifiant / mot de passe pour l'ajout de la référence,du webservices, à mon projet.

    Cependant il ne semble pas y a avoir de modification.

    J'obtiens toujours ce message d'erreur :

    erreur sur le webservices :
    La demande HTTP n’est pas autorisée avec un modèle d’authentification client « Anonymous ».
    L’en-tête d’authentification reçu du serveur était « Basic realm=""Bodet Realm"" ».
    Je n'arrive pas a comprendre à quel authentification il fait référence si ce n'est pas celle nécessaire pour l'accès au webservices depuis mon application.

    Cependant avec l'espion j'ai remarqué une chose en regardant objWS. Il semble qu'il y ai une propriété ClientCredential.

    Je vais creuser sur cette voie

    Si qqn a une idée je suis preneur.

    Merci d'avance ++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    J'ai récupérer un message d'erreur plus complet concernant mon problème avec un try catch :

    j'obtiens :

    Le serveur distant a retourneé une erreur (401) Non autorisé
    Suite à quoi j'ai fait une recherche :

    http://support.microsoft.com/kb/811318

    Cependant je ne comprends pas toute la démarche.

    En particulier cette élément :

    Pour résoudre ce problème, vous devez utiliser la propriété informations d'identification du service client proxy Web pour définir les informations d'identification sécurité pour l'authentification client de service Web.
    Je ne vois pas comment gérer le service client proxy we.

    Si qqn à une idée .

    Je continue mes recherches
    ++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Je crois avoir compris d'où viens mon problème :

    Sous Vs 2008 :

    - Dans l'explorateur de Solution
    - Click droit sur Service References
    - Ajouter une référence de service

    Et c la que je fait une erreur c'est que je renseigner les informations directement ici.

    Alors qu'il faut a cette endroit :

    - Cliquer sur Avancé
    - Cliquer sur Ajouter une référence Web ...

    Et la on arrive dans la bonne interface des WebService :

    - Dans l'url j'ai saisit l'adresse de mon WSDL
    - Cliquer sur Aller à
    - Indiquer les identifiant / mdp pour le webservices

    Et la dans l'explorateur de solution j'ai un nouveau répertoire "Web References" avec cette arborescence :

    - com.[ma_societe].[mon_site].Keliotest
      |___AbsenceFileService.Wsdl
      |___Reference.map
              |___AbsenceFile.datasource
              |___Reference.vb

    et dans mon code ça donne ceci en m'inspirant du tutoriel suivant pour l'ajout du credentials :

    http://support.microsoft.com/kb/811318

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub WebServices(ByVal datedebut As Date, ByVal datefin As Date)
     
            Dim ObjWS com.[ma_societe].[mon_site].Keliotest.AbsenceFileService = New com.[ma_societe].[mon_site].Keliotest.AbsenceFileService
            Dim cache As CredentialCache = New CredentialCache
            Dim response() As com.[ma_societe].[mon_site].Keliotest.AbsenceFile
     
            Try
                cache.Add(New Uri(ObjWS.Url), "Negociate", New NetworkCredential("identifiant", "Mdp", ""))
                ObjWS.Credentials = cache
                response = ObjWS.exportAbsenceFilesLimitedToAPeriod("", "", datedebut, datefin)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub

    J'ai actuellement encore une erreur qui est la suivante :

    la demande a échoué avec l'état HTTP 401 : Authentification incorrecte
    Mais la je vais continuer mes recherche

    De plus si quelqu'un peut m'expliquer la différence entre Service Reference et Web Référence, et surtout lequel est le mieux pour la requête sur un Webservice? Parce que la je n'ai pas encore saisit toute la nuance.

    De plus je ne comprend pas pourquoi le le dossier Web References n'apparait pas par défaut dans l'aborescence de la solution. Y a-t-il une option à activer pour cela?

    Voila voila

    ++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    ça y est j'arrive enfin à communiquer avec le webservice.

    voici ma démarche :

    - Ajout d'une web reference sans indiquer d'information d'authentification

    et j'ai utilisé ce code avec un CredentialCache "basic"

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub WebServices(ByVal datedebut As Date, ByVal datefin As Date)
     
            Dim ObjWS As com.evobus.ligny.keliotest.AbsenceFileService = New com.evobus.ligny.keliotest.AbsenceFileService
            Dim cache As CredentialCache = New CredentialCache
            Dim response() As com.evobus.ligny.keliotest.AbsenceFile
     
            Try
                cache.Add(New Uri(ObjWS.Url), "Basic", New NetworkCredential("mon_id", "mon_mdp", ""))
                ObjWS.Credentials = cache
                response = ObjWS.exportAbsenceFilesLimitedToAPeriod("", "", datedebut, datefin)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub

    Le pire c'est que l'identifiant / mot de passe ne correspond pas à celui indiquer dans le fichier de config, mais à l'ancien.......

    Voilà voilà

    ++

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour
    Nous venons d’acquérir le même web-service que vous (doc et exemple uniquement en java).
    Donc pour commencer : un grand merci pour ce post, je faisais la même erreur que vous dans l'ajout de la référence service web.

    Mon morceau de code
    Code VB.NET : 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
    22
    23
    24
     
        Sub RecupAbsFile()
     
            Dim vPOPULATION As String = ""
            Dim vGROUPE As String = ""
            Dim vDebut As Date = "01/09/2013"
            Dim vFin As Date = "30/09/2013"
     
            Dim BB As New Ws.AbsenceFileService
     
            Dim MyCredential = New System.Net.CredentialCache
            Dim NetCred = New System.Net.NetworkCredential("user", "pwd")
            MyCredential.Add(New Uri(BB.Url), "Basic", NetCred)
            BB.Credentials = MyCredential
     
            Dim DD() As Ws.AbsenceFile
            DD = BB.exportAbsenceFiles(vPOPULATION, vGROUPE, vDebut, vFin)
            Dim CC As Ws.AbsenceFile
     
            For Each CC In DD
                Dim Empl As String = CC.employeeFirstName & " " & CC.employeeIdentificationNumber & " " & CC.employeeSurname & vbCrLf
                RichTextBox1.Text += Empl.ToString
            Next
        End Sub

    Cordialement

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

Discussions similaires

  1. Comment déterminer les paramètres d'entrée qui influencent le plus la sortie d'un système ?
    Par Geof_Renier dans le forum Statistiques, Data Mining et Data Science
    Réponses: 4
    Dernier message: 07/08/2014, 19h43
  2. Réponses: 7
    Dernier message: 01/09/2009, 20h24
  3. Réponses: 15
    Dernier message: 28/06/2007, 19h28
  4. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24

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