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 :
Mon fichier app.config est le 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
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 :
Je ne vois pas ce qui cloche...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.
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
Partager