MSXML2.XMLHTTP30 liefert verschiedene Ergebnisse auch verschiednen Rechnern, VB-Code immer gleich

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    MSXML2.XMLHTTP30 liefert verschiedene Ergebnisse auch verschiednen Rechnern, VB-Code immer gleich

    Hallo,
    für eine Studienarbeit soll ich eine kleine Suchmaschine programmieren, die von verschiedenen Webseiten Inhalte lesen soll und auch 3 PCs gleichzeitig laufen soll.
    Per Registry habe ich dafür gesorgt, daß VB6 auf allen Rechnern den IE11 verwendet, statt den IE7 wie es die Vorgabe ist.

    Dazu verwende ich folgenden Code:

    Dim oHTTP As MSXML2.XMLHTTP30
    Set oHTTP = New MSXML2.XMLHTTP30

    oHTTP.Open "GET", urlToGet, False
    oHTTP.send

    While Not i = 4
    i = oHTTP.ReadyState
    Wend

    objStream.WriteText (oHTTP.responseBody)
    objStream.Position = 0
    objStream.Charset = "UTF-8"
    strDATA = objStream.ReadText(-1)
    WebPageCode = strDATA


    So weit so gut. Das Problem ist, daß auf einem Rechner richtige Ergebnisse kommen, auf 2 anderen aber komplett andere Rückgabewerte in der Variable "WebPageCode" stehen.
    (gleiche VB.exe, Windows10, IE11)


    Ich verstehe das einfach nicht. Woran kann es denn noch liegen, daß der Rückgabewert nicht identisch ist ?

    LG, Silke
    Hallo,
    danke, bin jetzt schlauer durch whoishostingthis.com/tools/user-agent/. Die Rechner haben unterschiedliche Versionen.

    Was muß ich denn updaten um hier auf die gleichen Einstellungen zu kommen, wie auf dem Rechner, wo alles korrekt läuft ?
    Browser-Version ist die gleiche. Muß das NET-Framework in der gleichen Version vorliegen oder ist das egal ?
    Oder liegt es doch an den Registry-Einstellungen, daß mein VB-Programm eine alte IE-Version nimmt ? (obwohl die Seite detectmybrowser.com überall den IE11 ausgibt)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SilkeK“ ()

    Kannst dem Objekt mitgeben:

    msdn.microsoft.com/en-us/library/ms766589(v=vs.85).aspx

    VB.NET-Quellcode

    1. MyHttp.setRequestHeader "User-Agent", "MyCustomUserAgent"


    So in der Art.
    Das ist meine Signatur und sie wird wunderbar sein!
    Das hift mir nicht so wirklich weiter.

    Wenn ich mir über whoishostingthis.com/tools/user-agent/ den Status ausgeben lassen, so bekomme ich auf dem "richtigen" Rechner:
    Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0)
    Auf dem nicht funktionierenden aber Mozilla/5.0 (Windows NT 6.2; WOW64; rv:11.0)

    Wie kann das sein, vor allem das NT 6.2 ? Beide Rechner haben die gleiche Build von Win10 64-Bit Variante, die installierte IE-Version ist auch identisch. Wieso verwendet dann mein VB6-Programm auf dem nicht funktionierenden Rechner einen anderen Browser ?
    Es wird kein Browser vewendet sondern das COM Objekt hier:

    Visual Basic-Quellcode

    1. Set oHTTP = New MSXML2.XMLHTTP30


    Jedes COM Objekt hat eine Version. Vll sind die leicht unterschiedlich. Ich weiß auch nicht woher die den User Agent beziehen. Aber das kann dir ja egal sein.
    Setze in deinem Programm einfach selber den User Agent, dann ist er für alle die dein Programm ausführen auch gleich.

    Visual Basic-Quellcode

    1. Set oHTTP = New MSXML2.XMLHTTP30
    2. oHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0)"
    3. oHTTP.Open "GET", urlToGet, False
    4. oHTTP.send


    Unabhängig davon. Welche Programmiersprache verwendest du denn jetzt ?
    VB6 oder VB.NET ?

    ??
    Das ist meine Signatur und sie wird wunderbar sein!
    Super, danke -> genau das (oHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0)" ) hat geholfen !

    Ich nutze noch VB6 (find ich einfach besser als VB.net und außerdem hab ich keine wirkliche Lust, ein anderes großes und funktionierendes System auf VB.net komplett neu machen zu müssen)
    Ja genau das hatte ich vorher auch geschrieben, nur nicht kopierfertig. Hättest dir nur den User Agent selber einfügen müssen.
    Aber whatever.

    Freut mich das es jetzt läuft.
    Das ist meine Signatur und sie wird wunderbar sein!