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

Framework .NET Discussion :

VS2010 : appel à un web service


Sujet :

Framework .NET

  1. #1
    Invité
    Invité(e)
    Par défaut VS2010 : appel à un web service
    Bonjour,

    Dans mon projet, je fais appel à un web service, le lien WSDL vers ce dernier est disponible à cette adresse, je l'ai nommé Homologacion.

    L'objectif est de pouvoir envoyer un fichier au format XML et de récupérer un fichier XML de type accusé de réception, afin de dire que le fichier envoyé est ok, ce premier se trouve dans un dossier TEMP, que je dois compresser au format ZIP et faire en sorte qu'entre le nom du fichier XML et celui du ZIP, seul l'extension doit changer, de plus, je dois me connecter auprès du WSSE UsernameToken, je vous met ainsi le code que j'ai mis:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     Try
                'génération du ZIP
                Dim adresse As String = "C:\Users\Administrateur.SERVEUR\Desktop\Envoi SUNAT\"
                Dim adresseTEMP As String = "C:\Users\Administrateur.SERVEUR\Desktop\Envoi SUNAT\TEMP"
                Dim fichier_envoi As String = System.IO.Directory.GetFiles(adresseTEMP)(0)
                fichier_envoi = fichier_envoi.Split("\")(fichier_envoi.Split("\").Count() - 1)
                Dim nomFichier As String = fichier_envoi.Split(".")(0).Trim
                Dim fichier_recu As String = "R-" & fichier_envoi
     
                Dim zip As New ICSharpCode.SharpZipLib.Zip.FastZip
                Dim pathToZipFile As String = adresse & nomFichier & ".zip"
     
                If System.IO.File.Exists(pathToZipFile) Then
                    System.IO.File.Delete(pathToZipFile)
                End If
                zip.CreateZip(pathToZipFile, adresseTEMP, True, "")
     
                'traitement pour envoyer le fichier
                Dim sunat_ruc As String = "xxxx"
                Dim sunat_usario As String = "xxxx"
                Dim sunat_clave As String = "xxxx"
     
                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(pathToZipFile)
     
                Dim ws As New Homologacion.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(pathToZipFile, data)
                ws.Close()
     
                'la réponse
                System.IO.File.WriteAllBytes(adresse & fichier_recu, Retour)
                MsgBox("Envoi ok")
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try

    L'erreur que je rencontre se situe en faisant l'instruction suivante:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ws As New Homologacion.billServiceClient

    L'erreur que je récupère est la suivante:
    System.InvalidOperationException: Impossible de trouver un élément*de point de terminaison par défaut qui fait référence au contrat 'Homologacion.billService' dans la section de configuration du client ServiceModel. Ceci peut être dû au fait que le fichier de configuration de votre application est introuvable ou que l'élément de point de terminaison correspondant à ce contrat est introuvable dans l'élément client.
    à System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
    à System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
    à System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
    à System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
    à System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
    à System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
    à System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
    à System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
    à System.ServiceModel.ClientBase`1..ctor()
    à ConsoleApplication1.Homologacion.billServiceClient..ctor() dans C:\Users\Administrateur.SERVEUR\Desktop\Envoi SUNAT\envoi_sunat\envoi_sunat\Service References\Homologacion\Reference.vb:ligne 227
    à ConsoleApplication1.Module1.Main() dans C:\Users\Administrateur.SERVEUR\Desktop\Envoi SUNAT\envoi_sunat\envoi_sunat\Module1.vb:ligne 39
    Je pense que mon erreur vient de mon fichier app.config qui n'est pas configuré correctement, je vous met tel que je l'ai (sans les identifiants pour se connecter au WSSE UsernameToken) :
    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.diagnostics>
            <sources>
                <!-- Cette section définit la configuration de l'enregistrement dans le fichier journal de My.Application.Log -->
                <source name="DefaultSource" switchName="DefaultSwitch">
                    <listeners>
                        <add name="FileLog"/>
                        <!-- Supprimez les marques de commentaire dans la section suivante pour écrire dans le journal des événements de l'application -->
                        <!--<add name="EventLog"/>-->
                    </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"/>
                <!-- Supprimez les marques de commentaire dans la section suivante et remplacez APPLICATION_NAME par le nom de votre application à écrire dans le journal des événements de l'application -->
                <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
            </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" hostNameComparisonMode="StrongWildcard"
                        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                        useDefaultWebProxy="true">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <security mode="Transport">
                            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
                            <message clientCredentialType="UserName" algorithmSuite="Default" />
                        </security>
                    </binding>
                  <binding name="secured">
                    <security mode="TransportWithMessageCredential">
                      <message clientCredentialType="UserName" />
                    </security>
                  </binding>
                </basicHttpBinding>
            </bindings>
            <client>
              <endpoint address="https://www.sunat.gob.pe:443/ol-ti-itcpgem/billService"
                  binding="basicHttpBinding" bindingConfiguration="BillServicePortBinding"
                  contract="Production.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>xxxxxx</wsse:Username>
                      <wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>xxxxx</wsse:Password>
                    </wsse:UsernameToken>
                  </wsse:Security>
                </headers>
              </endpoint>
            </client>
        </system.serviceModel>
    </configuration>

    Vous pourriez me dire comment je dois m'y prendre? à vrai dire, je ne comprends pas grand chose dans ce fichier app.config, mis à part que l'on mentionne des paramètres,, afin de faire appel à ce web service.
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai trouvé d'où venait mon soucis, il venait justement du fichier app.config, à la ligne 57, je dois mettre cette donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contract="Homologacion.billService"
    J'ignore pourquoi cela n'a pas été mis à jour.
    Cependant, je ne peux pas encore mettre mon message comme étant résolu, je rencontre un autres soucis mais ça n'a pas de rapport avec le code en lui même, c'est juste un problème d'autorisation.

Discussions similaires

  1. Appeler un web service avec pl/sql
    Par squalito dans le forum PL/SQL
    Réponses: 5
    Dernier message: 17/09/2012, 15h21
  2. Appels de Web services (SOAP) ?
    Par ovdbc dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 17/10/2007, 11h28
  3. [Web Services] Appel de Web Service (pb avec authentification)
    Par cicolas dans le forum Spring
    Réponses: 4
    Dernier message: 04/07/2006, 10h20
  4. [Débutant] Appeler un Web Service
    Par slyer dans le forum Services Web
    Réponses: 2
    Dernier message: 17/02/2006, 18h15

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