Problème accès

coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 4 juin 2010 à 19:17
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 24 juin 2010 à 15:29
Bon déjà je n’ai jamais accéder à des web services.
Celui-ci est le service web suivant : http://webservices.eurotaxglass.com/wsdl/identification.wsdl
C’est un service professionnel. Je dois y accéder mais je n’y parviens pas. Je suis sous VS 2010. Le fournisseur du service m’a donné des identifiants et a validé mon adresse IP pour l’accès. Pour dire que si vous essayez de vous connecter vous allez surement avoir un problème. Il m’aussi donné ce lien (http://www.soapui.org) pour télécharger ce soft client soap pour essayer la connexion avec la requete suivante :
<soap:Envelope xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<ETGHeader xmlns="http://www.eurotax.com/Webservices/Identification/">
<VersionRequest>1.2.0</VersionRequest>
<Originator>
xxxx
<LoginData>
<Name>yyyy</Name>
zzzz


</LoginData>
</Originator>
</ETGHeader>
</soap:Header>
<soap:Body>
<Settings xmlns="http://www.eurotax.com/Webservices/Identification/">
FR
FR
EUR
</Settings>
<VehicleList xmlns ="http://www.eurotax.com/Webservices/Identification/">
<Vehicle>
<VehicleType>
<VehicleTypeCode>10</VehicleTypeCode>
<SortCode>10</SortCode>
</VehicleType>
</Vehicle>
</VehicleList>
</soap:Body>
</soap:Envelope>



et je parviens bien à me connecter car j’ai la réponse suivante : (un bout de réponse car elle est longue)


<SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.eurotax.com/Webservices/Identification/">
<SOAP-ENV:Header>
<ETGHeader xmlns="http://www.eurotax.com/Webservices/Identification/">
<VersionRequest>1.2.0</VersionRequest>
<Originator>
XXXX
<LoginData>
<Name>XXXX</Name>
XXXX


</LoginData>
</Originator>
<Response>
<Statistics>
<StartDateTime>2010-06-03T13:44:20.203</StartDateTime>
<EndDateTime>2010-06-03T13:44:20.359</EndDateTime>
</Statistics>
<Success/>
</Response>
</ETGHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body id="_0">
<Settings xmlns="http://www.eurotax.com/Webservices/Identification/">
FR
FR
EUR
</Settings>
<VehicleList xmlns ="http://www.eurotax.com/Webservices/Identification/">
<Vehicle xsi:type="ns1:Vehicle">
<VehicleType xsi:type="ns1:VehicleType">
<VehicleTypeCode>10</VehicleTypeCode>
<SortCode>10</SortCode>
</VehicleType>


10001

<Name>Lim</Name>
<NameEx>Limousine</NameEx>


</Vehicle>
Etc….


Sous visual studio j’ai fais ajouter une référence web en indiquant le lien wsdl et je récupère bien toutes les classes de mon web service. Mais comment faire pour se connecter et avoir une réponse ?
Au fait je programme en vb net



Thierry

6 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
5 juin 2010 à 18:46
Salut,

Lors de l'ajout de ta référence Web, l'assistant te demande de saisir un espace de nom pour celle-ci (ici MonWebService) :



L'espace de nom contiendra toutes la classes du service web, il te faudra les instancier comme ceci (en VB) :

Dim svc As New MonWebService.LaClasseSoapClient
Try
    svc.Open
Catch
    Messagebox.Show("Echec de connexion au service Web")
End Try


Si, comme dans ma capture, la case pour la génération des événements asynchrone est coché alors, les classes auront en plus des appels asynchrones à leurs méthodes, EX :

Si la classe possède la fonction Login, retrounant un boolean, en mode synchrone cela te donne simplement :

Dim IsLoggedIn = svc.Login("user","pass")


Dans le cas d'un appel asynchrone, le programme(le thread principale) ne bloquera pas durant l'appel à la fonction, en revanche c'est le service qui déclanchera un événement pour te prévenir que la réponse du serveur est arrivée :
Private Function Login (ByVal User As String, ByVal Pass As String) _
        As Boolean
    '
    Dim svc As New MonWebService.LaClasseSoapClient
    AddHandler Svc.LoginCompleted, AddressOf svc_LoginCompleted
    Try
        svc.Open
        svc.LoginAsync (User, Pass) 
    Catch
       Messagebox.Show("Echec de connexion au service Web")
    End Try
End Sub
 
Private Sub svc_LoginCompleted(_
        ByVal sender As Object, _
        ByVal e As WebService.LoginCompletedEventArgs _
        ) Handles Svc.LoginCompleted
        '
    If e.Error IsNot Nothing Then
        'Erreur durant la requête soap
    Else
        If e.Result Then
            'Connecté !
        Else
            'Non connecté
        End If
    End If
        '
End Sub







Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
GGus Messages postés 2 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 15:05
Merci pour ces explications Mayzz.

Dans mon cas, j'arrive à accéder le service web à partir de ma page aspx, lorsque je suis sur la machine de développement (VS2005, projet Web Site avec ajout de la référence web vers le service web).

Je publie cette application sur un serveur web sur internet, par ftp, en copiant manuellement :
- la page aspx sous la racine du répertoie virtuel du site
- la classe proxy (WsPublic.dll) dans le dossier /bin du répertoire virtuel

et j'ai l'erreur :

Dim t As New WsPublic.WsReportFree
Type 'WsPublic.WsReportFree' is not defined

Pourtant, sur la machine de dévelopement, le type est bien reconnu et lorsque je regarde par reflexion dans la dll (WsPublic.dll) du proxy que j'ai mis dans /bin, il y a bien le domaine de nom WsPublic et la classe WsReportFree !!!

Faut-il faire autre chose lors de la publication sur internet ?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
10 juin 2010 à 15:14
Salut,

Question...

Je publie cette application sur un serveur web sur internet, par ftp, en copiant manuellement :
- la page aspx sous la racine du répertoie virtuel du site
- la classe proxy (WsPublic.dll) dans le dossier /bin du répertoire virtuel


La page aspx est une page cliente ? La page qui consomme le service Web ?

As-tu mis à jour le web.config vers ton hébergement ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
GGus Messages postés 2 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 15:23
Merci pour ta réponse.

Oui la page aspx est une simple page de test qui appel le service web (Dim t As New WsPublic.WsReportFree) ...

et exact j'ai aussi copié le web.config à la racine du répertoire virtuel (à côté de la page aspx).
Dans le web.config, il y a :



comme sur mon poste de développement, à partir duquel j'arrive à appeler le service web sur internet (pas localement) !
Normalement le web.config est pris en compte dynamiquement par le serveur IIS ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 juin 2010 à 17:28
Bonjour Mayzz
Merci pour ta réponse. La mienne est tardive, mais j'avais un autre chantier sur le feu. Je reprends donc le web service qui me pose problème.
Ton exemple prends en compte un service web Microsoft (asmx). Pour ma part il s'agit d'un service vers un lien "wsdl".
En apportant ma référence de service je récupère bien mon service et les opérations qui vont avec.
Mais concernant la connexion je n'ai pas de classe login.

Voila ce que j'ai fait :

Dim svc As New WS_Eurotaxglass.IdentificationSoapPortClient
'AddHandler svc.GetVersionCompleted, AddressOf svc.GetVersionAsync
Try
svc.Open()

Catch
Response.Write("Echec de connexion au service Web")
End Try

la connexion a l'air de fonctionner car je n'ai pas d'erreur.
mai ensuite pour se connecter avec les identifiants, je n'ai pas de classe login.
J'ai bien cocher la case 'événements asynchrones'
Que faire ensuite.
Ci joint le lient du pdf décrivant les classes de ce service
http://www.ncf-web.net//images/client/pdf/EurotaxGlass%27s_WebService_Identification_guide_1.1.8.pdf

Thierry
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
24 juin 2010 à 15:29
Encore moi (suite du précédent message)
J'ai aussi ces classes qui permettent de saisir les identifiants (je pense) car je n'ai pas d'erreur.

Dim Signature1 As New WS_Eurotaxglass.OriginatorType
Signature1.Signature = "XXXXXX"

Dim LoginData1 As New WS_Eurotaxglass.LoginDataType
LoginData1.Name = "XXXXXXXX"
LoginData1.Password = "XXXXXX"
LoginData1.ReturnSecurityToken = "true"


WS_Eurotaxglass.ISOcountryType.FR.ToString()
WS_Eurotaxglass.ISOlanguageType.FR.ToString()
WS_Eurotaxglass.ISOcurrencyType.EUR.ToString()


'Elément à passer pour avoir une réponse
Dim Vehicle1 As New WS_Eurotaxglass.VehicleType
Vehicle1.VehicleTypeCode = 10
Vehicle1.SortCode = 10

Comment construire ma connexion et surtout comment réceptionner une réponse ?
Thierry
0
Rejoignez-nous