Bonjour,

J'aimerais migrer un projet vb.net que j'ai fait en version windev, le soucis est que je n'arrive pas à utiliser un web service.

Le web service que j'utilise (dont voici l'url vers la wsdl) permet d'envoyer un fichier XML compressé au format ZIP, en retour, je reçois un fichier XML compressé au format ZIP, ce fichier XML en retour me dit si le fichier que j'ai envoyé a été accepté ou refusé.

Dans ce web service, j'utilise la méthode SendBill, qui a pour paramètre :
- fileName : de type string, contient le nom du fichier (doit contenir l’extension .ZIP dans le nom)
- contentFile : de type tableau de bytes, contient le fichier ZIP à envoyer

En retour, je reçois un tableau de bytes, qui contient la réponse du web service.

Dans mes tests, j'essaye d'envoyer ce fichier, dans ce cas, il faudra mettre dans le paramètre fileName la valeur 20450835600-01-FF11-56.zip

Ce web service nécessite une connexion, voici les identifiants :

utilisateur : 20450835600MODDATOS
mot de passe : MODDATOS

Afin de contourner le problème d'appel du web service dans mon projet windev, j'ai voulu générer une librairie (à l'aide de visual studio 2010), j'ai mis le code suivant :
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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Public Class ServiceSunat
    Private _ZIPFile As String
    Private _ZIPFileResponse As String
    Private _sunat_ruc As String
 
    Public Property ZIPFile()
        Get
            Return _ZIPFile
        End Get
        Set(value)
            _ZIPFile = value
        End Set
    End Property
 
    Public Property ZIPFileResponse()
        Get
            Return _ZIPFileResponse
        End Get
        Set(value)
            _ZIPFileResponse = value
        End Set
    End Property
 
    Public Property sunat_ruc()
        Get
            Return _sunat_ruc
        End Get
        Set(value)
            _sunat_ruc = value
        End Set
    End Property
 
    Public Function SendXMLFile() As String
        Try
            If _ZIPFile = "" Then
                Throw New Exception("The ZIPFile value is missing")
            End If
 
            If _ZIPFileResponse = "" Then
                Throw New Exception("The ZIPFileResponse value is missing")
            End If
 
            If _sunat_ruc = "" Then
                Throw New Exception("The sunat_ruc value is missing")
            End If
 
            Dim NomFichierZIP As String = System.IO.Path.GetFileName(_ZIPFile)
            Dim usernametoken_login As String = sunat_ruc & "MODDATOS"
            Dim usernametoken_pwd As String = "MODDATOS"
 
            System.Net.ServicePointManager.UseNagleAlgorithm = True
            System.Net.ServicePointManager.Expect100Continue = False
            System.Net.ServicePointManager.CheckCertificateRevocationList = True
 
            Dim ws As New ServiceBeta.billServiceClient
            Dim Retour As Byte()
 
            Dim data As Byte() = System.IO.File.ReadAllBytes(_ZIPFile)
 
            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(NomFichierZIP, data)
            ws.Close()
 
            System.IO.File.WriteAllBytes(ZIPFileResponse, Retour)
 
            Return ""
        Catch ex As Exception
            If ex.Message = "" Then
                Return "Unknown error encountered"
            Else
                Return ex.Message
            End If
        End Try
 
    End Function
 
End Class
Mon fichier app.config est le suivant :

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
<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <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" 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-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>XXXXXXXXXXXXXXXXXXXMODDATOS</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>

Quand je veux tester ma librairie dans un projet sous visual studio, le code suivant :

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
Module Module1
 
    Sub Main()
        Dim EnvoiSunat As New SUNATbeta.ServiceSunat
        Dim l_messageRetour As String = ""
 
        With EnvoiSunat
            .sunat_ruc = "20450835600"
            .ZIPFile = "C:\Mes Projets\EnvoiWindev\20450835600-01-FF11-56.zip"
            .ZIPFileResponse = "C:\Mes Projets\EnvoiWindev\sunatResponse.zip"
            l_messageRetour = .SendXMLFile
        End With
 
        If l_messageRetour = "" Then
            MsgBox("ok")
        Else
            MsgBox(l_messageRetour, MsgBoxStyle.Critical)
        End If
 
    End Sub
 
End Module

Me renvoie cette erreur :

Impossible de trouver un élément de point de terminaison par défaut qui fait référence au contrat 'ServiceBeta.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.
Je ne vois pas ce qui cloche...

Merci de me donner un coup de main

Ps:
1) le web service utilisé est juste un web service test, il vérifie juste si le fichier qu'on envoie peut être validé ou pas si je dois l'envoyer en production
2) le web service étant de type test, tous les utilisateurs ont le même mot de passe, seul la partie numérique dans le nom utilisateur change