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 :

Tracer le message SOAP


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Tracer le message SOAP
    Bonjour à tous,

    Comment faites vous pour tracer le message SOAP que vous envoyez quand vous faites appel à un web service?

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    perso j'ai opté pour la version bourrine mais qui a l'avantage de fonctionner avec n'importe quel client SOAP (gSOAP, SoapUI ...) : wireshark.
    Est-ce que les classes du framework pour les web services proposent un truc plus simple ? Je ne sais pas.

    Bonne soirée.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    perso j'ai opté pour la version bourrine mais qui a l'avantage de fonctionner avec n'importe quel client SOAP (gSOAP, SoapUI ...) : wireshark.
    Est-ce que les classes du framework pour les web services proposent un truc plus simple ? Je ne sais pas.

    Bonne soirée.
    Bonjour,
    j'ai installé Wireshark portable 2.0.4, je m'en vois pour m'en servir correctement.
    Dans le filtre, je met "tcp.stream eq 0" (comme sur ce lien : http://www.objis.com/formation-java/...wireshark.html), je lance l'analyse, je fais tourner mon projet .NET où je fais appel au web service, une fois le projet fermé, j'arrête l'analyse, j'ai des enregistrements qui remontent dont un sur fond rouge
    Nom : menu.png
Affichages : 630
Taille : 75,4 Ko

    Sur une ligne, je fais clic droit : suivre --> Flux TCP, je fais afficher en brut, le résultat ne ressemble pas à grand chose :
    Nom : TCP.png
Affichages : 630
Taille : 62,1 Ko

    Aurais-je loupé une étape?
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Un retour serait-il possible?

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 64
    Points : 91
    Points
    91
    Par défaut
    Salut,

    si tu es en WCF tu peux enregistrer à peu près tout (avant et après éventuels filtres, etc.) juste en jouant avec le fichier *.config :
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    voilà comment je fais perso :
    - j'épure mes requêtes qui partent vers mon serveur via son IP avec le filtre :
    - je recherche ma requête (la dernière au protocole HTTP),
    - clique droit > suivre > flux TCP
    Et j'obtiens de jolies requêtes/réponses HTTP. Mais c'est pas du HTTPS comme toi (enfin il semble). Après une petite recherche j'ai trouvé ce billet. Apparemment il est possible de paramétrer son wireshark avec le certif' qui va bien pour pouvoir lire les requêtes en clair.

    edit : flux TCP, et non FTP ...
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Plutôt que de faire le debug à ta place (cf. ton MP) on va essayer de chercher ensemble.

    La première question à se poser est : quel est le souci ?
    Là tu nous parles juste de voir la requête envoyée, mais je suppose que c'est pour trouver l'origine d'un bug.

    Ensuite : comment se manifeste le souci ?
    Est-ce que tu as une erreur HTTP ? Un fault SOAP ?

    Question subsidiaire : comment appelles-tu le serveur SOAP ?
    Tu montes ta requête à la main ? Tu utilises des objets du framework ? D'une bilbi tiers ? Tout est monté en auto depuis le WSDL ?
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Sinon il y a des solutions plus simples que Wireshark, comme par exemple Fiddler. Parce que Wireshark c'est bien, mais ca reste complique a prendre en main quand on est pas familier avec ce genre de choses
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 64
    Points : 91
    Points
    91
    Par défaut
    Si c'est juste pour voir le contenu des enveloppes et des en-têtes, et / ou pour faire des tests en les manipulant, tu as PostMan qui est ultra-simple d'utilisation :

    https://www.getpostman.com/

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    La première question à se poser est : quel est le souci ?
    Là tu nous parles juste de voir la requête envoyée, mais je suppose que c'est pour trouver l'origine d'un bug.
    J'avais fais quelques années auparavant un projet en vb.net pour faire appel à un web service, là, j'aimerais essayer de migrer mon code en windev, or le soucis c'est que windev ne sait pas gérer en langage de programmation la consommation d'un web service qui requiert une authentification wsse security, la seule façon d'y arriver consiste à gérer les enveloppes soap (en windev, le fichier app.config ou web.config n'existent pas, ni même de fichier qui s'y apparente).
    J'avais déjà commencé à voir cela ici, l'erreur rencontrée par Yoshi (erreur 0101) signifie que l'entête de sécurité n'est pas la bonne.
    Du coup, j'aimerais récupérer l'enveloppe soap que j’envoie dans mon projet en vb.net afin de pouvoir envoyer le même depuis windev.

    Citation Envoyé par jopopmk Voir le message
    Ensuite : comment se manifeste le souci ?
    Est-ce que tu as une erreur HTTP ? Un fault SOAP ?
    A quel niveau? quand je veux tracer via wireshark? quand je veux exécuter mon projet en .net?
    Je n'ai aucune erreur (à part la ligne rouge que j'ai montré plus haut, bien que je ne vois pas de quoi il s'agit[/QUOTE]

    Citation Envoyé par jopopmk Voir le message
    Question subsidiaire : comment appelles-tu le serveur SOAP ?
    Tu montes ta requête à la main ? Tu utilises des objets du framework ? D'une bilbi tiers ? Tout est monté en auto depuis le WSDL ?
    J'ai édité mon fichier app.config qui est comme celui ci:
    Code xml : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0"?>
    <configuration>
      <configSections>
      </configSections>
      <system.web>
        <compilation debug="true" />
        <authentication mode="Windows" />
        <webServices>
          <soapExtensionTypes>
            <add type="Namesapce.className, NameSpace" priority="1" group="0" />
          </soapExtensionTypes>
        </webServices>
      </system.web>
      <system.diagnostics>
        <sources>
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="Information"/>
        </switches>
        <sharedListeners>
          <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
        </sharedListeners>
      </system.diagnostics>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BillServicePortBinding" closeTimeout="00:01:00"
              openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
              allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="524288"
              maxReceivedMessageSize="65536" useDefaultWebProxy="true">
              <security mode="Transport" />
            </binding>
            <binding name="secured">
              <security mode="TransportWithMessageCredential">
                <message clientCredentialType="UserName" />
              </security>
            </binding>
            <binding name="BillServicePortBinding1" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="https://www.sunat.gob.pe:443/ol-ti-itcpgem-beta/billService"
            binding="basicHttpBinding" bindingConfiguration="BillServicePortBinding"
            contract="ServiceBETA.billService" name="BillServicePort">
            <headers>
              <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <wsse:UsernameToken>
                  <wsse:Username>20450835600MODDATOS</wsse:Username>
                  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">MODDATOS</wsse:Password>
                </wsse:UsernameToken>
              </wsse:Security>
            </headers>
          </endpoint>
        </client>
      </system.serviceModel>  
    </configuration>

    Niveau code, je fais comme cela :
    Code vb : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
          Try
     
                Dim fichier_envoi As String = "C:\Temp\SUNAT\20450835600-01-FF11-56.zip"
     
                'traitement pour envoyer le fichier
                Dim sunat_ruc As String = "20450835600"
                Dim sunat_usario As String = "MODDATOS"
                Dim sunat_clave As String = "MODDATOS"
     
                Dim usernametoken_login As String = sunat_ruc & sunat_usario
                Dim usernametoken_pwd As String = sunat_clave
     
                System.Net.ServicePointManager.UseNagleAlgorithm = True
                System.Net.ServicePointManager.Expect100Continue = False
                System.Net.ServicePointManager.CheckCertificateRevocationList = True
     
                Dim data As Byte() = System.IO.File.ReadAllBytes(fichier_envoi)
     
                Dim ws As New ServiceBETA.billServiceClient
                Dim Retour As Byte()
     
                ws.ClientCredentials.CreateSecurityTokenManager()
                ws.ClientCredentials.UserName.UserName = usernametoken_login
                ws.ClientCredentials.UserName.Password = usernametoken_pwd
     
                ws.Open()
                'envoi du fichier ZIP à la SUNAT
                Retour = ws.sendBill("20450835600-01-FF11-56.zip", data)
                ws.Close()
     
                'la réponse
                System.IO.File.WriteAllBytes("C:\Temp\SUNAT\R-20450835600-01-FF11-56.zip", Retour)
     
                'MsgBox("Envoi ok")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    Le fichier que j'envoi est celui ci.

    @DotNetMatt : justement, j'avais commencé par Fiddler mais ça m'a provoqué pas mal de soucis, désormais, il m'est impossible de tracer avec Fiddler tout en faisant appel à mon web service, je rencontre cette erreur dans mon projet en vb.net : impossible d'établir une relation de confiance pour le canal de sécurité SSL/TLS avec l'autorité xxxxxxx
    La première fois que je m'en étais servi, j'avais pu générer ce fichier de résultat de trace. Du coup, je préfère trouver une autre alternative, je pensais surtout à voir du côté de Soap Extention mais je ne suis pas sure de comprendre comment ça marche ...

    @jopopmk : je ne connais pas le côté WCF en visual studio, je connais juste les parties consoles, winform et classes, je vais y jeter un oeil, tout comme ce nouveau programme que tu parles dans ton dernier message
    Dernière modification par Invité ; 12/07/2016 à 11h14.

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    en fait tu as un souci avec ton code WinDev et du coup tu aimerais voir ce qu'envoie .NET qui lui n'a pas de souci ?
    Le .NET te sert de "parapluie" mais in fine ce que tu veux c'est un code Windev fonctionnel ?

    Pour l'erreur je parle de ta discussion avec le serveur, il n'y a aucune erreur dans les impressions d'écran wireshark que tu as mises.
    Quand je lis ton poste Windev c'est des fault SOAP que tu obtiens, le serveur en face répond donc correctement.
    Ce qu'il faut savoir c'est à quoi correspondent ces codes erreurs (en demandant sur le forum du presta ? ).
    Un truc à creuser peut-être c'est le contentFile qui est défini comme base64Binary dans le WSDL mais est envoyé en multipart dans la doc.

    Sinon : arrives-tu à accéder à d'autres services sur ce server ?
    as-tu essayé de paramétrer wireshark pour prendre en charge ton certif' ?
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Tracer le message SOAP depuis client jax-ws
    Par mickael.guilbert dans le forum Services Web
    Réponses: 6
    Dernier message: 10/06/2008, 12h11
  2. Voir le message soap
    Par siddh dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 15/05/2006, 10h34
  3. Envoi de messages SOAP
    Par ep31 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 13/12/2005, 12h58
  4. message SOAP valide
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 10h14
  5. [castor][SOAP] Probleme avec la validation du message SOAP
    Par VinceFromBcn dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/09/2005, 14h12

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