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

VB.NET Discussion :

Comment utiliser un SOAP Header dans VB.Net ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Points : 66
    Points
    66
    Par défaut Comment utiliser un SOAP Header dans VB.Net ?
    Bonjour à tous,

    Encore moi et mes problèmes de Web-Services...

    J'arrive à interroger un web-service simple depuis VB.net. Mais maintenant, je souhaite interroger un WS qui utilise un Header. Or je n'y arrive pas (normal, sinon je ne poserai pas la question).

    Donc, voilà ce que je fais.

    Je définis une Web Reference (et non pas un Service Reference) que j'appelle MyWS_jjcasalo.

    J'ai vu sur le site msdn (à cette page : http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx) qu'il fallait définit une Classe MyHeader, ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Class MyHeader
        Inherits SoapHeader
        Public Authorization As String
    End Class
    Puis, je crée un bouton sur lequel j'ajoute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim mySoapHeader As MyHeader = New MyHeader()
            mySoapHeader.Authorization = "DA1NDEzMzRhODU0Nzg1M2M2YzdlNDBiYmJhYzk="
    ... et voilà... Après, je suis coincé.

    Toujours sur cette page MSDN, ils indiquent qu'il faut définir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim proxy As MyWebService = New MyWebService()
    Mais je ne comprends pas la définition de cette classe MyWebService.

    Comment puis-je relier ma référence de service (MyWS_jjcasalo) au proxy ?

    Je suis perdu. Donc, je me tourne vers vous.

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Points : 66
    Points
    66
    Par défaut
    OK, après des recherches, j'ai trouvé. J'en fais donc profiter la communauté.

    Il faut définir un WebReference (et non pas un Service Reference).
    On appellera ce WebReference "EnterpriseService".

    Puis, dans le code principal :

    Il faut définir une Classe MyService qui va permettre de surcharger la fonction GetWebResponse pour lui ajouter le ou les Header avec leur valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class MyService
        Inherits EnterpriseService.EntrepriseService
        Protected Overrides Function GetWebResponse(ByVal request As System.Net.WebRequest) As System.Net.WebResponse
            ' C'est ici qu'il faut ajouter les Headers (le nom et la valeur).
            request.Headers.Add(System.Net.HttpRequestHeader.Authorization, "Basic aXBhcmk6MXXXXXXXXXXXXYmJhYzk=")
            Return MyBase.GetWebResponse(request)
        End Function
    End Class
    Puis, sur l'appui sur un bouton qui permet d'appeler un WebService :

    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
    22
    23
    24
    25
    26
    27
    28
    Private Sub getListeEvenements_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_getListeEvenements.Click
            ' WebService : wse.XXXXXXXXXXXXX.com:8081/
            ' WS : http://wse.XXXXXXXXXXXXX.com:8081/documentation/index/ws/entreprise/version/0.4#getListeEvenements
     
            Me.Cursor = Cursors.WaitCursor
            Dim service As New MyService()    ' La classe qui a été déclarée juste au dessus
            Dim result As EnterpriseService.InseeReturn  ' On appelle le SebService
     
            Try
                result = service.getListeEvenements(tbx_Siren4.Text, tbx_Nic4.Text)
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Me.Cursor = Cursors.Default
                Exit Sub
            End Try
     
            ' On traite les résultats.
            If result.nbReponses = 0 Then
                MessageBox.Show("Pas d'évènements pour ce SIREN", "Aucun évènement trouvé", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                ' Affichage de la form InseeEvenavec les résultats sous la forme d'un DataGrid.
                Dim f_InseeEven As New InseeEven(result.result())
                f_InseeEven.Show()
            End If
     
            Me.Cursor = Cursors.Default
     
        End Sub
    Voilà, c'est peut être évident pour certains d'entre vous, mais je me suis arraché les cheveux pendant quelque temps. Donc, si ça peut vous aider, tant mieux.

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

Discussions similaires

  1. comment utiliser des images enregistrées dans oracle dans mon application .Net
    Par dhay06 dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 18/06/2010, 11h58
  2. Réponses: 4
    Dernier message: 22/09/2008, 09h11
  3. Comment utiliser du C++/CLI dans du VB.Net ?
    Par onur dans le forum C++/CLI
    Réponses: 3
    Dernier message: 19/10/2006, 11h42
  4. Comment utiliser le compte SYSTEM dans un fichier .bat
    Par DiabloZizi dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 02/03/2006, 14h45
  5. Comment utiliser des instructions SSE2 dans un code c++?
    Par alexIsBack dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 22/02/2006, 19h10

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