Deutsch
Forum

InternetConnectA Probleme

 

Clemens
Meier
Ich bin dabei, ein http-Request mit der POST-Methode zu erstellen. Eigentlich sollte es funktionieren, tut es natürlich nicht. Die Zeilen, die das Problem beinhalten sind:
KompilierenMarkierenSeparieren
hOpen& = InternetOpenA(addr(INET_CallerName$),opentype&,0,0,0)
print "hOpen "+str$(hOpen&)
hConnect& = InternetConnectA(hopen&,addr(server$),port%,addr(username$),addr(password$),INTERNET_SERVICE_HTTP&,0,0)
print "hConnect "+str$(hConnect&)

Die 1. Zeile funktioniert noch, es wird ein Long-Wert ausgegeben. Dieser Wert wird in die InternetConnectA Funktion übernommen. Die Variablen haben folgende Werte:
hopen& = 13369348 als Beispiel, bekommen durch InternetOpenA
server$ = www.einedomain.de (Diese Domain existiert)
port% = 80
username$ = (ich habe es auch mit 0 versucht)
passwort$ = (ich habe es auch mit 0 versucht)
INTERNET_SERVICE_HTTP& = 3

Doch der Wert der zurückkommt ist 0. Eine Internetverbindung besteht. Also habe ich noch die Funktion internetGetLastResponseInfoA eingebaut, so wie es in SDK empfohlen wird. Doch die Fehlernummer ist 0 und es gibt keine Fehlermeldung.

Hat jemand eine Idee, woran es ggf. liegen könnte oder in welcher Richtung ich den Fehler suchen sollte.
 
XProfan 9.1; XP SP2; FF; Editpad
17.04.2006  
 



Ich habe Dein Posting verschoben - im Stammtisch gehts nicht um solche Programmierprobleme. Bitte nutze für Codes auch das CODE, statt das BOX - Symbol.
 
17.04.2006  
 



Probier mal ein einfaches:
KompilierenMarkierenSeparieren
ihdl&:=InternetOpen(0,0,0,0,0)

und dann
KompilierenMarkierenSeparieren
declare server$,user$,pwdd$,mem#,data#
server$:="SERVERz"
user$:="USERNAMEz"
pwdd$:="PASSWORTz"
ftppfad$:="/"
dim mem#,4
long mem#,0:=12345
dim data#,318
clear data#
chdl&:=InternetConnect(ihdl&,addr(server$),21,addr(user$),addr(pwdd$),1,134217728,0)// 134217728 == 8000000 == INTERNET_FLAG_PASSIVE

dann kannst Du schauen ob Du mit
KompilierenMarkierenSeparieren
dhdl&:=FtpFindFirstFile(chdl&,0,addr(data#),2147483648,0)
ein Handle bekommst.

Mein Beispiel zielt zwar nicht auf Port80 ab - aber der Titel des Threads beschreibt ja auch ein anderes Problem.

Salve.
 
17.04.2006  
 




Clemens
Meier
Sorry, kann ich nicht ausprobieren, da ich nicht XPSE installieren kann, denn dazu müsste ich die Doku im chm-File lesen können, doch die benötigt den IE, der sich bei mir weigert etwas anzuzeigen (-> Hierzu bitte keine Kommentare, habe rund 200 Euro für einen MS-Techniker ausgegeben, der keine Lösung wußte und eine Reinstallation von Windows empfahl und durchführte, wodurch weitere Programme Schaden nahmen Gesamtschaden rund 700 Euro, dank an MS, die wissen, wie man die Wirtschaft ankurbelt)

Gibt es die XPSE-Dokumentation noch in einem anderen Format, doc? html? PDF? Oder könnte man dein Beispielcode auch im normalen XProfan laufen lassen?
 
XProfan 9.1; XP SP2; FF; Editpad
17.04.2006  
 




Rolf
Koch
Hi

nimm einfach hier die Doppelpunkte weg und schon ist es normaler Profancode.
Also anstatt:
KompilierenMarkierenSeparieren
Ihdl&:=Internetopen(0,0,0,0,0)

nimmst Du
KompilierenMarkierenSeparieren
Ihdl&=Internetopen(0,0,0,0,0)



Siehst es ja schon hier an den Boxen. Beim unteren wird nix mehr von XPSE angezeigt.
 
17.04.2006  
 



Bei InternetOpenA solltest Du als OpenType& lieber 1 nehmen, nicht 0 wie in iF seinem Beispiel. Kannste ja mal testen ( 1 = INTERNET_OPEN_TYPE_DIRECT )
Ob man den Agenten einfach weglassen kann weiß ich nicht, würde ich einfach irgendwas ala: XProfan@Inet angeben
 
17.04.2006  
 



Du könntest die CHM dekompilieren.

XPSE wird aber nicht installiert - lediglich aus der IDE Deiner Wahl aufgerufen - mit dem Dateinamen als Parameter.
 
17.04.2006  
 




Clemens
Meier
Klasse, gleich so viele Antworten, aber:

Eine opentype ändert nichts. Den Agenten zu ändern bringt auch nichts, kann man auch leer lassen. Ich habe inzwischen auch ein Beispiel mit InternetOpenUrlA versucht, doch auch bei diesem kommt nur eine 0 raus. Ich schätze, es liegt weniger an dem Programm, sondern irgendetwas an meinem System könnte nicht korrekt laufen, obwohl alle DLLs wie onl.dll oder online.dll einwandfrei funktionieren. Und wenn es mit der wininet nicht klappt, muss ich einen anderen Weg suchen.

Mmh auf den Tipp die chm einfach zu dekompilieren hätte ich auch von alleine kommen können. Habe mal einen Decompiler herunter geladen. Damit wird es wohl gehen.
 
XProfan 9.1; XP SP2; FF; Editpad
17.04.2006  
 




Clemens
Meier
Also, am System scheint es nicht zu liegen, habe ein paar Hardware- und Softwaretools laufen lassen, die keine Fehler meldeten. Die wininet.dll ist ansprechbar und steht zur Verfügung, dennoch bekomme ich immer den Handle 0. Habe es auch mit dem FTPFindFirstFile versucht. InternetOpenA gibt seltsamerweise auch immer die gleiche Handle-Nummer zurück. Das kann auch nicht normal sein. Vielleicht hat einer von euch über Nacht noch eine Idee, hier mal der komplette Code:
KompilierenMarkierenSeparieren
def InternetGetLastResponseInfoA(3) !"wininet.dll","InternetGetLastResponseInfoA"
ALLGEMEINE INTERNET API-Deklarationen:
def InternetCloseHandle(1) !"wininet.dll","InternetCloseHandle"
Benötigt als Parameter hInternetHandle
def InternetConnectA(8) !"wininet.dll","InternetConnectA"
Benötigt werden:
hInternetSession als &
lpszServerName als $
nProxyPort als %
lpszUsername als $
lpszPassword als $
dwService als &
dwFlags als &
dwContext als &
def InternetOpenA(5) !"wininet.dll","InternetOpenA"
Benötigt werden:
lpszCallerName als $
dwAccessType als &
lpszProxyName als $
lpszProxyBypass als $
dwFlags als &
def InternetReadFile(4) !"wininet.dll","InternetReadFile"
Benötigt werden:
hFile als &
sBuffer als $
lNumBytesToRead als &
Bytes als &
def &INTERNET_FLAG_RELOAD  $80000000
def &INTERNET_SERVICE_HTTP  3
HTTP API-Deklarationen:
def HttpAddRequestHeadersA(4) !"wininet.dll","HttpAddRequestHeadersA"
Benötigt werden:
hHttpRequest als &
sHeaders als $
lHeadersLength als &
lModifiers als &
def HttpOpenRequestA(8) !"wininet.dll","HttpOpenRequestA"
Benötigt werden:
hInternetSession als &
lpszVerb als $
lpszObjectName als $
lpszVersion als $
lpszReferer als $
lpszAcceptTypes als &
dwFlags als &
dwContext als &
def HttpSendRequestA(5) !"wininet.dll","HttpSendRequestA"
Benötigt werden:
hHttpRequest als &
sHeaders als $
lHeadersLength als &
sOptional als $
lOptionalLength als &
declare HTTP_ADDREQ_FLAG_ADD&
declare HTTP_ADDREQ_FLAG_REPLACE&
declare INET_CallerName$
declare INET_ContentType$
declare IOTPreconfig%
declare IOTDirect%
declare IOTProxy%
declare INTERNET_FLAG_RELOAD&
declare INTERNET_SERVICE_HTTP&
HTTP_ADDREQ_FLAG_ADD& = $20000000
HTTP_ADDREQ_FLAG_REPLACE& = $80000000
INET_CallerName$ = "Testzugriff"
INET_ContentType$ = "Content-Type: application/x-www-form-urlencoded
"
IOTPreconfig% = 0
IOTDirect% = 1
IOTProxy% = 3
INTERNET_FLAG_RELOAD& = $80000000
INTERNET_SERVICE_HTTP& = 3
declare string$,url$,data$

Proc HttpPost

    Aufruf
    Parameters url$,data$,opentype&,port%,username$,password$
    Declare  server$,path$,hOpen&,hConnect&,hRequest&,Buffer#,Bytes&,i&,ende%,httppost$
    declare errorbuffer#,error&
    DIM Buffer#,2048
    DIM errorbuffer#,2048
    url$ = trim$(url$)

    if (lower$(left$(url$,7)) = "https://")

        url$ = right$(url$,len(url$)-7)

    endif

    i& = InStr("/",url$)

    if (i& > 0)

        server$ = left$(url$,i&-1)
        path$ = right$(url$,len(url$)-i&+1)

    else

        server$ = url$
        path$ = "/"

    endif

    print "Server: "+server$
    print "Pfad: "+path$
    hOpen& = InternetOpenA(addr(INET_CallerName$),opentype&,0,0,0)
    print "hOpen "+str$(hOpen&)
    hConnect& = InternetConnectA(hopen&,addr(server$),port%,addr(username$),addr(password$),INTERNET_SERVICE_HTTP&,0,0)
    print "hConnect "+str$(hConnect&)
    hRequest& = HttpOpenRequestA(hConnect&,"POST",addr(path$),"HTTP/1.0",0,0,INTERNET_FLAG_RELOAD&,0)
    print "hRequest "+str$(hRequest&)

    if (hRequest& = 0)

        InternetGetLastResponseInfoA(addr(error&),addr(errorbuffer#),sizeof(errorbuffer#))
        print str$(error&)
        print "Info: "+string$(errorbuffer#,0)
        waitinput
        dispose buffer#
        dispose errorbuffer#
        end

    endif

    Header
    HttpAddRequestHeadersA(hRequest&,addr(INET_ContentType$),len(INET_ContentType$),HTTP_ADDREQ_FLAG_REPLACE& | HTTP_ADDREQ_FLAG_ADD&)
    HttpSendRequestA(hRequest&,0,0,addr(data$),len(data$))
    ende% = 1

    repeat

        print "a"
        InternetReadFile(hRequest&,addr(buffer#),sizeof(buffer#),addr(Bytes&))

        if (bytes& = 0)

            ende% = 0

        else

            httppost$ = char$(buffer#,0,bytes&)

        endif

    until ende% = 0

    InternetCloseHandle(hRequest&)
    InternetCloseHandle(hConnect&)
    InternetCloseHandle(hOpen&)
    dispose buffer#
    dispose errorbuffer#
    return httppost$

endproc

CLS
url$ = "https://www.colored-web.com/httppost/index.php"
data$ = "X=15&Y=29"
string$ = HttpPOST(url$,data$,1,80,"","")
print string$
waitinput
end
 
XProfan 9.1; XP SP2; FF; Editpad
17.04.2006  
 




Rolf
Koch
Hi,
hab hin und her getestet.
Die Bruchstücke Code von iF sind mir bekannt, da wir damals zusammen darüber gesprochen hatten.

iFs Code war im Prinzip identisch aber er lief im Gegensatz zu Deinem (also baute eine FTP Verbindung auf und listete Daten auf).

Kann es sein, dass irgendwie der Server dies all nicht so mag?
 
18.04.2006  
 




Clemens
Meier
Nee, am Server scheint es nicht zu liegen, habe es eben mit zwei weiteren Servern an verschiedenen Standorten probiert, doch auch bei denen kommt immer exakt das gleiche Ergebnis raus.

Hat vielleicht irgendjemand ein funktionierende Prog mit InternetOpenA also mit Api-Funktionen aus der wininet.dll, die ich dann bei mir mal ausprobieren kann?
 
XProfan 9.1; XP SP2; FF; Editpad
18.04.2006  
 



Hab ich oben gepostet?
 
18.04.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.476 Betrachtungen

Unbenanntvor 0 min.
Walter08.11.2020
Erasmus.Herold15.01.2019
Andre Rohland04.09.2016
Unbenannt22.03.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie