TCPConnect mit HttpSetProxy funktioniert nicht

  • Hallo Leute,

    ich habe ein Problem mit einer Verbindung über den Proxy hinter welchem ich sitze. Mein Code sieht wie folgt aus:

    Code
    HttpSetProxy(0) ;Proxy!
    	TCPStartup()
    	Local $sGet = "", $sHost = "", $iSocket = 0, $sReferer = "", $bRecv = Binary(""), $sRecv = ""
    
    
    	$sGet 	= '/3/search/movie?api_key=' & $iniread_TMDB & '&query=' & $splitTitle & '&year=' &  $splitYear & '&language=' & $iniread_Language
    	$sHost = TCPNameToIP("api.themoviedb.org")
    	MsgBox("", "", $sHost)
    	$iSocket = TCPConnect($sHost, 80)

    Was funktioniert ist TCPNameToIP, ich komme also schon raus. TCPConnect macht aber dann nicht weiter und läuft in einen TimeOut (10060) :(

    Was mache ich falsch? HttpSetProxy(0) sollte für die gesamte Session reichen?

  • Wie ich gard feststelle brauche ich für die IP-Auflösung gar keinen Proxy. Das wird durchgeroutet...

    Die Inet* Methoden kann ich nicht verwenden, da ich ein JSON-String abrufe und mich dort entsprechend authentifizieren muss. Wie kann das sonst funktionieren? Über WinHTTP?

  • Mit WinHTTP sollte es auch funktionieren...

    [autoit]

    $sGet = '/3/search/movie?api_key=' & $iniread_TMDB & '&query=' & $splitTitle & '&year=' & $splitYear & '&language=' & $iniread_Language

    [/autoit][autoit][/autoit][autoit]

    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("GET", "api.themoviedb.org", False) ; Hier evtl. False durch "HTTP/1.1" ersetzen ;)
    $oHTTP.Send($sGet)
    ; Und um die Daten, die zurückgesendet werden, zu bekommen...
    $sJSON = $oHTTP.ResponseText

    [/autoit]


    Ich übernehme keine Gewähr für das Snippet :P
    Ohne die Daten zum Testen kann ich nicht mehr machen ^^

    MfG

    Edit: Hier ein MSDN-Link, wo du alles über das WinHttpRequest-COM Object nachlesen kannst ;)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ich kann leider die Doku zu winhttp.au3 nicht öffnen, wie geht das da mit dem Proxy, das war ja das Wichtige. Ich habe es mal so probiert:

    $oHTTP.SetProxy(HTTPREQUEST_PROXYSETTING_PRECONFIG)

    Geht aber nicht..


    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.SetProxy("HTTPREQUEST_PROXYSETTING_PROXY", "IP:8080", "*.microsoft.com");
    ;Post request
    $oHTTP.Open("POST", "http://www.POSTURL.com" , False)
    ;Add User-Agent header
    $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)")
    ;Add Referrer header
    $oHTTP.SetRequestHeader("Referrer", "http://www.REFERRERURL.com")
    ;Add Content-Type
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    ;Send POST request
    $oHTTP.Send("DATATOSEND")
    ;Get received data
    $oReceived = $oHTTP.ResponseText

    MsgBox("","Received",$oReceived)

    Einmal editiert, zuletzt von r0m (25. Juli 2013 um 18:31)

  • Ich kann leider die Doku zu winhttp.au3 nicht öffnen, wie geht das da mit dem Proxy, das war ja das Wichtige. Ich habe es mal so probiert:

    $oHTTP.SetProxy(HTTPREQUEST_PROXYSETTING_PRECONFIG)

    Geht aber nicht..


    Warum brauchst du eigentlich unbedingt einen Proxy?
    Sollte ja auch so funktionieren, oder?

    Und 2.: Natürlich funkioniert das nicht!
    Du kannst das ja nicht einfach 1:1 übernehmen! Wenn "HTTPREQUEST_PROXYSETTING_PRECONFIG" schon eine Variable (was sie bei deinem Bsp. nicht ist) wäre, wäre sie undeklariert.
    Das hättest du wissen sollen, allein wegen dem Syntax-Highlighting. 8|

    Das sollte dir weiterhelfen:

    [autoit]

    Global Const $HTTPREQUEST_PROXYSETTING_DEFAULT = 0x00000000
    Global Const $HTTPREQUEST_PROXYSETTING_PRECONFIG = 0x00000000
    Global Const $HTTPREQUEST_PROXYSETTING_DIRECT = 0x00000001
    Global Const $HTTPREQUEST_PROXYSETTING_PROXY = 0x00000002

    [/autoit]


    ;)

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Danke für die Hilfe. Ich sitze auf der Arbeit hinter einem Proxy und komme deswegen einfach nicht raus. Mit WinHttp habe ich noch nie gearbeitet und dachte das wären irgendwelche internen Parameter.

    Muss ich morgen mal ausprobieren, habe das jetzt wie folgt gemacht:

    Code
    Global Const $HTTPREQUEST_PROXYSETTING_PRECONFIG  = 0x00000000
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1");$oHTTP.SetProxy($HTTPREQUEST_PROXYSETTING_PRECONFIG);;Post request$oHTTP.Open("POST", "http://www.POSTURL.com" , False);Add User-Agent header$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)");Add Referrer header$oHTTP.SetRequestHeader("Referrer", "http://www.REFERRERURL.com");Add Content-Type$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");Send POST request$oHTTP.Send("DATATOSEND");Get received data$oReceived = $oHTTP.ResponseText
    MsgBox("","Received",$oReceived)


    Wie kommst du aber drauf, dass das so geht?

  • Poste bitte nächstes Mal deinen Code mit dem

    Code
    [autoit][/autoit]

    Tag ;)

    [autoit]

    Global Const $HTTPREQUEST_PROXYSETTING_PRECONFIG = 0x00000000
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.SetProxy($HTTPREQUEST_PROXYSETTING_PRECONFIG)
    $oHTTP.Open("POST", "http://www.POSTURL.com" , False) ; Post request
    $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)") ; Add User-Agent header
    $oHTTP.SetRequestHeader("Referrer", "http://www.REFERRERURL.com") ; Add Referrer header
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") ;Add Content-Type
    $oHTTP.Send("DATATOSEND") ; Send POST request
    $oReceived = $oHTTP.ResponseText ; Get received data
    MsgBox("","Received",$oReceived)

    [/autoit]

    Hab hier mal das ganze formatiert, bei dir hats die Formatierung zerrissen.

    Und meinst du, wie ich die 4 Variablen herausgefunden habe?
    Ich hab einfach in der VC++ - Include "httprequest.h"/"httprequest.idl" nachgesehen ;)

    MfG

    P.S.: Und wie gesagt, ich kann dir nicht garantieren, dass es funktioniert. :P

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ja, genau. So habe ich das meine ich auch gemacht. Hat jetzt von Zuhause funktioniert, ob der dann auf der Arbeit den Proxy nimmt und der Proxy den Request durchleitet werde ich dann morgen sehen.

    Vielen Dank für deine Hilfe.

  • Ja, genau. So habe ich das meine ich auch gemacht. Hat jetzt von Zuhause funktioniert, ob der dann auf der Arbeit den Proxy nimmt und der Proxy den Request durchleitet werde ich dann morgen sehen.

    Vielen Dank für deine Hilfe.


    Das freut mich, das es zumindest von Zuhause funktioniert.
    Wenn es mit dem Proxy-Server nicht funktioniert, dann dürfte evtl. der Proxy-Server so eingestellt sein, das man bestimmte Seiten nicht abrufen kann, mitunter auch deine. Ist gut möglich. :whistling:

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Im Browser mit Proxy funktioniert ja alles wunderbar mit der Seite und das Tool hat mit TCP auch super funktioniert, aber eben mit dem Proxy und TCP ging es nicht. Bin aber zuversichtlich, dass es morgen klappt - von der Arbeit aus.
    Ist ja nur simples Abfragen von TheMovieDataBase

    Melde mich dann morgen :)

    Einmal editiert, zuletzt von r0m (25. Juli 2013 um 22:52)

  • Alsoooo....

    Mit $HTTPREQUEST_PROXYSETTING_PRECONFIG hat es leider nicht funktioniert, wenn ich aber einen festen Proxy angebe läuft alles wie gewünscht. Auch mit "Netsh
    winhttp import proxy source=ie" hatte ich keinen Erfolg.

    Reicht mir aber so aus.

    Wenn du weitere Tipps hast, dann her damit. Ansonsten besten Dank für die Hilfe.