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:
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) :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
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
Partager