Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 16h13   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Par défaut Requete HTTP Post

Bonjour,

Je souhaite appeler un web service.
L'éditeur m'a fourni l'URL d'appel et j'ai constitué le flux des données, celui-ci est au format XML.

J'ai suivi les recommandations ici : pour générer mon code, mais j'ai systématiquement une erreur : "The server name or address could not be resolved".

A noter qu'après vérification auprès de l'éditeur, l'URL utilisée est la bonne (d'ailleurs en la saisissant directement sur un navigateur, ça me retourne une réponse).

Ci-dessous mon code, merci de votre aide...

Code :
1
2
3
4
5
6
7
8
9
 
        reqHTTP.Open "POST", URL, False
 
        'fichier contient le flux xml
        reqHTTP.send fichier
 
        codeRetour = reqHTTP.status
        libRetour = reqHTTP.statusText
        resultat = reqHTTP.responseText
soniab66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 20h35   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Est-ce que tu n'a pas quelque chose à mettre dans l'en-tête de la requête HTTP ?
Ça se fait avec la méthode setRequestHeader avant d'appeler la méthode send.

Voir par exemple ici.
Ça n'est qu'un exemple.
Il peut y avoir des choses plus spécifiques à mettre dans l'en-tête.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 21h41   #3
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour
Il me semble que tu dois plutôt utiliser l'objet XMLHTTP au lieu de WinHTTP
Or microsoft XMLHTTP n'est pas disponible par defaut sur toutes les versions de windows.
@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 10h00   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Bonjour,

Merci à vous 2 pour vos réponses.
J'en ai fait un mix, la solution de Keita m'a permis d'avoir un message différent ("paramètre incorrect"). Comme c'est un msg en français, je pense que c'est le web service qui me le renvoie.
Donc je pense que je m'approche...

Bonne journée
soniab66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 12h47   #5
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour à tous
Je ne sais pas comment tu as fait tes declarations; essaie comme ceci pour voir:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
    Dim oHttp As Object
    Dim strUrl
    Set oHttp = CreateObject("Microsoft.XMLHTTP")
 
    strUrl = "http://www.quelquechose..........quelquechose"
 
    oHttp.Open "POST", strUrl, False
    oHttp.send
 
    MsgBox (oHttp.responseText)
mets ça dans l'evenement click d'un bouton.
eventullement:Verifie que tu as respecté la casse par rapport à ton login sur le site et evidemment ton mot de passe.
@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 14h58   #6
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Bonjour et merci Keita,

j'essaierais ça lundi au boulot.

En attendant, bon week-end!
soniab66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 09h14   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Bonjour,

Super Keita!
ça marche beaucoup mieux... sauf que je ne sais pas encore comment passer mon fichier XML en paramètre d'entrée, mais au moins le web service m'a répondu.
Encore merci!

Bonne journée
soniab66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 11h46   #8
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour à tous
A ce niveau soniab66, je te suggère de rentrer en contact avec le support du site en question; seuls eux pourront te dire avec exactitude comment passer ton fichier en paramètre.A ma connaissance chaque site a sa propre manière d'implémenter les requêtes adressées à leurs serveurs.Je te conseille vivement de leur envoyer un mail.il te répondront;j'en suis sur.
Sinon ça étonnerait que ça marche de cette façon:
Code :
1
2
3
 
        'fichier contient le flux xml
        reqHTTP.send fichier
A mon humble avis, ton fichier doit figurer dans l'url; mais où exactement? et comment? seuls eux pourront te situer.
Mais si c'est seulement pour envoyer un fichier sur un serveur quelconque, pourquoi n'utiliserais tu pas un logiciel de transfert ftp comme Filezilla (gratuit) ou CuteFTP (3$)(professionnel)?
Je dis merci à LedZeppII au passage; c'est lui qui m'a permis de creuser dans ce sens là.Te rappelles-tu LedZeppII ?
@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 20h10   #9
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Existe-t-il un lien accessible vers le mode d'emploi du Web Service que tu cherches à utiliser ?

Citation:
Envoyé par keita Voir le message
Je dis merci à LedZeppII au passage; c'est lui qui m'a permis de creuser dans ce sens là.Te rappelles-tu LedZeppII ?
Je dois avouer que non.

En attendant, voici un exemple.
Mais comme le dit Keita, selon le site et le Web Service, les méthodes diffèrent.
Code :
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
' Implémentation de la méthode SOAP 1.1 du web sevice ConversionRate
' du site http://www.webservicex.net
' Documentation à cette adresse :
' http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate
' Liaison tardive (utilisation de CreateObject)
Sub Exemple02
Dim wq As Object
Dim sUrl As String
Dim sBody As String
 
' Contenu XML à envoyer au serveur
sBody = sBody & "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf
sBody = sBody & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" "
sBody = sBody & "xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" "
sBody = sBody & "xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCrLf
sBody = sBody & "  <soap:Body>" & vbCrLf
sBody = sBody & "    <ConversionRate xmlns=""http://www.webserviceX.NET/"">" & vbCrLf
sBody = sBody & "      <FromCurrency>EUR</FromCurrency>" & vbCrLf
sBody = sBody & "      <ToCurrency>JPY</ToCurrency>" & vbCrLf
sBody = sBody & "    </ConversionRate>" & vbCrLf
sBody = sBody & "  </soap:Body>" & vbCrLf
sBody = sBody & "</soap:Envelope>" & vbCrLf
 
' URL du service Web
sUrl = "http://www.webservicex.net/CurrencyConvertor.asmx"
 
' Création objet requête HTTP
Set wq = CreateObject("Microsoft.XMLHTTP")
' Création de la requête
wq.Open "POST", sUrl, False
 
' ajout des en-têtes
wq.SetRequestHeader "Content-Type", "text/xml; charset=utf-8"
wq.SetRequestHeader "Content-Length", Len(sBody)
wq.SetRequestHeader "SOAPAction", """http://www.webserviceX.NET/ConversionRate"""
 
' envoi de la requête
On Error GoTo ErrH
wq.Send (sBody)
 
' En général la réponse est 200 OK
If wq.status = 200 Then
   MsgBox wq.responseText
Else
   MsgBox wq.getAllResponseHeaders, , wq.status & " : " & wq.statusText
End If
 
Sortie:
Set wq = Nothing
Exit Sub
 
ErrH:
MsgBox Err.Description, , "Erreur No. " & Err.Number
Resume Sortie
End Sub
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h37.


 
 
 
 
Partenaires

Hébergement Web