IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Erreur avec MSXML2.ServerXMLHTTP


Sujet :

ASP

  1. #1
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut Erreur avec MSXML2.ServerXMLHTTP
    Bonjour,

    Voilà le code que j'essaie d'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MyUrl = "http://www.google.fr"
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open "GET", MyUrl, False
    xmlhttp.send ""
    Response.Write xmlhttp.responseText
    Set xmlhttp = Nothing
    Et je reçois cette erreur :
    msxml3.dll erreur '80072ee2'
    The operation timed out
    Quelqu'un voit où je me suis raté ?

    Merci.

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Tu as cette erreur à la ligne 4 ?
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Citation Envoyé par fredoche Voir le message
    Tu as cette erreur à la ligne 4 ?
    Non, c'est la ligne 5 => xmlhttp.send ""

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    J'ai testé ton code, pas de souci

    je chercherai bien du coté d'un problème réseau pour la machine qui exécute le script, problème de connexion à google depuis cette machine.
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Citation Envoyé par fredoche Voir le message
    J'ai testé ton code, pas de souci

    je chercherai bien du coté d'un problème réseau pour la machine qui exécute le script, problème de connexion à google depuis cette machine.
    Pourtant avec ce code asp, ça fonctionne
    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
     
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
     
    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    <!--
     
    function XMLHTTPButton_onclick() {
    	var DataToSend = "id=1";
    	var MyUrl = "http://www.google.fr";
     
    	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    	xmlhttp.Open("GET",MyUrl,false);
    	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xmlhttp.send(DataToSend);
    	//alert(xmlhttp.responseText);
    	document.getElementById("Contenu").value = xmlhttp.responseText;
    }
     
    //-->
    </SCRIPT>
     
    <INPUT type="button" value="Submit XMLHTTP" id=XMLHTTPButton name=XMLHTTPButton 
    LANGUAGE=javascript onclick="return XMLHTTPButton_onclick()">
     
    <input type="text" name="Contenu" id="Contenu" size="500">
    </BODY>
    </HTML>
    Si je lance ce vbs sur le serveur, ça fonctionne aussi
    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
     
      Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
      ' Or, for version 3.0 of XMLHTTP, use:
    '   Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
      ' Opens the connection to the remote server.
    MyUrl = "http://www.caradisiac.com/service/itineraire/?iti-start-way=&iti-start-postal_code=85460&iti-start-town=&iti-start-country_code=France&iti-end-way=&iti-end-postal_code=85000&iti-end-town=&iti-end-country_code=France"
     
    MyUrl = "http://www.google.fr"
      xmlhttp.Open "GET", MyUrl, False
       ', "population3\crosniep", "Vendee85"
      ' Actually Sends the request and returns the data:
     
    	xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
      xmlhttp.send("")
     
      msgbox xmlhttp.responseText
     Set xmlhttp = Nothing
    Enfin, si j'exécute cette page asp, j'obtiens
    msxml3.dll erreur '800c0005'
    Erreur système : -2146697211.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MyUrl = "http://www.google.fr"
      Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
    xmlhttp.open "GET", MyUrl, False
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.send ""
    Response.Write xmlhttp.responseText
    Set xmlhttp = Nothing
    J'avoue que j'ai du mal à comprendre

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    désolé de ne pouvoir t'aider

    je passais simplement par là.

    en tout cas pour moi le 1er ne fonctionne pas, sous FF, erreur sur activeXobject, sous IE9, erreur Permission refusée sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.Open("GET",MyUrl,false);
    le 3e code sous asp fonctionne, pas de soucis

    essaye peut être de changer l'url requêtée dans un 1er temps, pour aller cher chercher du contenu local depuis ton serveur web et ce script asp.

    Tes 3 tests utilisent différents contextes de sécurité, le 1er sur ton navigateur, le 2nd si tu lances un VBS sous ta session, même si c'est sur le serveur, le 3e doit surement utiliser l'impersonnalisation du type IUSR ou IWAM
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  7. #7
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Faut-il donner des droits (ntfs ou iis) particuliers ?

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Je ne sais pas trop à vrai dire...

    Ce que tu peux essayer de faire, c'est de changer les droits avec lesquels sont exécutés ton script ASP.

    tu peux pour cela ajouter ce genre d'instructions au web.config du répertoire du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    tu seras ensuite prompté pour saisir un compte valide sur le serveur.
    ton script sera exécuté avec les droits de ce compte et non avec les droits de l'utilisateur anonyme.

    c'est un test, déja tu verras si le problème est lié ou non à l'impersonnalisation du script

    Si je suis pas clair, n'hésite pas
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  9. #9
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Ca me parait clair, mais je suis en ASP classique (pas .net).

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Ce que je te propose est bien pour de l'asp classique, c'est juste des directives de configuration à appliquer sur IIS7, qui désactive l'accès anonyme, ce qui fait que tu dois te logguer avec un compte reconnu par le système, local, ou bien plus généralement par ta sécurité active directory.

    tes scripts sur un serveur IIS sont exécutés avec des droits, qui quand l'accès anonyme est autorisé, sont les droits de IUSR_nomdupc en principe, et une fois que tu es loggué avec un compte, les droits de ce compte.
    C'est ce qu'on appelle l'impersonnalisation il me semble.

    Avec IIS6, il suffit de désactiver l'accès anonyme sur la ressource, et tu auras le même résultat.


    Dis nous en plus sur ta config, ce sur quoi tu testes ton script peut être ?

    Mais avant cela, plutôt que d'essayer de charger google.fr, essaie simplement de charger une page locale, un simple test.html dans le même rep que ton script ASP.

    Voilà je t'emmène peut être loin, mais c'est les tests que je ferais, en commençant par le contenu local, car dans le même rep, tu as en principe les mêmes droits. Donc tu peux voir si ton problème est lié de près ou de loin à des droits.
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  11. #11
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    La config :

    windows server 2003 / sp2
    IIS6

    Si j'essaie d'atteindre une simple page html du même répertoire, ça fonctionne.

    Pour la méthode d'authentification, la connexion anonyme est bien cochée.
    Par ailleurs, j'ai créé un utilisateur que j'ai mis dans le groupe Administrateurs. J'ai remplacé le compte IUSR_xxx par ce nouveau utilisateur pour la connexion anonyme. Je lui ai mis en plus controle total, mais ça ne passe toujours pas.

  12. #12
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Citation Envoyé par pc75 Voir le message

    Pour la méthode d'authentification, la connexion anonyme est bien cochée.
    Par ailleurs, j'ai créé un utilisateur que j'ai mis dans le groupe Administrateurs. J'ai remplacé le compte IUSR_xxx par ce nouveau utilisateur pour la connexion anonyme. Je lui ai mis en plus controle total, mais ça ne passe toujours pas.
    Je présume que tu es conscient que c'est super "chaud" de faire comme ça, hors tests j'entends.

    J'imagine que ça a marché avec un truc du genre :
    maintenant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyUrl = "http://localhost/chemin/test.html"
    c'est à dire en forçant une connexion http, sur l'adresse locale correspondante

    J'ai un IIS6/ win2003, je vais tester dessus pour voir
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  13. #13
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Non bah ça marche sur win2003/IIS6, que ce soit le 1er ou le 2e code que tu as posté
    sans session, avec l'utilisateur anonyme, sur 2 machines différentes dans 2 réseaux totalement différents.

    T'as pas un URLscan ou un firewall pointilleux avec une config bizarre des fois ?
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  14. #14
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    J'avais fait le test avec
    MyUrl = "http://MonServeur/MonSite/test.htm"
    Le pare feu est désactivé sur le serveur. Par contre, je suis derrière un proxy.

  15. #15
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    J'ai répondu un peu vite.

    Quand j'ai dit que ça fonctionnait avec
    MyUrl = "http://MonServeur/MonSite/test.htm"
    en fait, ça m'affiche la page. Or je cherche à récupérer le code source (html) de cette page.

  16. #16
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Puisque tu fais un Response.Write, il est normal que cela s'affiche...

    Essaie de jouer sur les timeouts de l'objet

    xmlHttp.setTimeouts x, y, z, t
    doc

    remarque :
    Pourtant avec ce code asp, ça fonctionne
    tu nous présente un script client ... pas d'asp, donc


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  17. #17
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    J'ai essayé avec timeouts mais ça ne change rien.

    PS : Il n'existe pas de méthode "miracle" pour récupérer le code source d'une page ?

  18. #18
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Les miracles ça existe en info ?

    le proxy est une piste
    d'autant que ta requête http sur ton propre site et ta page test fonctionne

    le proxy peut analyser ta requête http avant de l'exécuter lui-même

    et dans une requête http provenant d'un navigateur, tu as un champ user-gent qui est renseigné. Par exemple pour le firefox que j'utilise sur ce forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User-Agent	Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
    et tu as d'autres champs utiles au dialogue http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding	gzip, deflate
    Accept-Language	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Connection	keep-alive
    je ne sais pas trop comment est formé ta requête http par ServerXMLHTTP
    on peut assez aisément le visualiser en asp avec une page de test sur ton serveur, puisque ça marche en local.

    Une autre hypothèse, c'est que ton serveur ne sait pas qu'il doit utiliser ton mandataire proxy

    peux tu bypasser ce proxy ? si oui go...

    sinon tu as des pistes pour configurer ton proxy ici :
    http://stackoverflow.com/questions/1...rosoft-xmlhttp
    si tu lis l'anglais, et sinon je peux t'aider

    pour vérifier si ça vient du proxy, tu peux essayer de charger une autre page depuis une autre machine dans ton réseau local, avant le proxy. Si ça marche tu as des chances que le proxy soit en cause.

    C'est un proxy transparent ou déclaré ?
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  19. #19
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bon, j'ai réussi autrement.
    Avec mon utilisateur que j'ai mis dans le groupe administrateur et que j'ai déclaré comme utilisateur pour la connexion anonyme, j'ai utilisé ce code :

    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
     
        MyUrl = "http://www.google.fr"
        Set web = CreateObject("InternetExplorer.Application")
        web.Navigate MyUrl
        Do While web.Busy
        Loop
        On Error Resume Next
        Set doc = Nothing
        Do Until Not doc Is Nothing
            Set doc = web.Document
        Loop
        strWebPage = doc.body.OuterHTML
        web.Quit
        GetData = strWebPage
        Chaine = mid(GetData, 500, 50)
        Response.Write Chaine
    Merci pour votre aide.

  20. #20
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Citation Envoyé par pc75 Voir le message
    Bon, j'ai réussi autrement.
    Avec mon utilisateur que j'ai mis dans le groupe administrateur et que j'ai déclaré comme utilisateur pour la connexion anonyme
    Ca franchement c'est vraiment pas une bonne façon de faire

    En passant par IE qui doit être configuré pour ton proxy, ça passe.

    Mais serverxmlhttp correctement configuré est une bien meilleure solution
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo