coulis
Messages postés121Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention24 juin 2010
-
4 juin 2010 à 19:17
coulis
Messages postés121Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention24 juin 2010
-
24 juin 2010 à 15:29
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
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 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.
GGus
Messages postés2Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention10 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 ?
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 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.
GGus
Messages postés2Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention10 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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
coulis
Messages postés121Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention24 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
coulis
Messages postés121Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention24 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"