HTTPS POST Request
Sebastian Gebhard
- php
Hallo,
ich weiß, dass es zu meinem Thema schon die ein oder andere Diskussion gab. Ich hab unter anderem schon hier im Forum-Archiv gelesen und auch schon viel gegoogelt. Aber ich habe nichts gefunden, was erklären könnte warum ich nicht weiterkomme.
Hier erstmal die Ausgangslage:
Ich bin dabei eine Typo3-Service-Extension zu programmieren, die Funktionalität zum Kommunizieren mit Google Spreadsheets Data API bieten soll. Damit ein PHP-Script benutzerbezogene Google-Services nutzern kann, ist es notwendig sich per HTTP(s)-Request "einzuloggen".
Dafür gibt es das ClientLogin Interface BB
[php]
[/php]
Entschuldigung, ich habe versehentlich zu früh abgesendet.
Ich wollte noch meinen PHP-Code anfügen, den ich bisher geschrieben habe:
function login($mail, $pwd){
$fp = fsockopen('ssl://www.google.com', 443);
$request ='POST /accounts/ClientLogin HTTP/1.0
';
$request.='Content-type: application/x-www-form-urlencoded
';
$request.='Content-Length: 300
';
$request.='
';
$request.='Email='.$mail.'&Passwd='.$pwd.'&service=wise&source=typo3-txspreadsheet-x1
';
fwrite($fp, $request);
$resH='';
$resC='';
while($char = fread($fp, 1)){
echo $char;
}
}
Warning: fread() [function.fread]: SSL: fatal protocol error in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 55
Das ist der einzige Output den ich bekomme.
Was mache ich falsch?
ssl:// ist kein bekanntes URI Schemata.
Versuch mal https://
ssl:// ist kein bekanntes URI Schemata.
Versuch mal https://
Damit bekomme ich folgenden Output:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 41
Warning: fsockopen() [function.fsockopen]: unable to connect to https://www.google.com:443 in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 41
Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 52
Warning: fread(): supplied argument is not a valid stream resource in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 55
Wie siehts aus, wenn du direkt im fsockopen den Pfad mit an gibst?
Sowas wie https://www.google.com:443/accounts/ClientLogin
Wie siehts aus, wenn du direkt im fsockopen den Pfad mit an gibst?
Sowas wie https://www.google.com:443/accounts/ClientLogin
Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 52
Warning: fread(): supplied argument is not a valid stream resource in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx_spreadsheet_sv1.php on line 55
Diesmal erzeugt fsocketopen keine Fehlermeldung, also scheint eine Verbindung zu Stande zu kommen, aber der zurückgegebene Datenzeiger $fp, ist laut der Fehlermeldung von fwrite gar keiner.. xD
Hi Patrick,
Wie siehts aus, wenn du direkt im fsockopen den Pfad mit an gibst?
Sowas wie https://www.google.com:443/accounts/ClientLogin
Nein, im PHP-Manual ist bei fsockopen() eindeutig von einem Hostnamen die Rede, nicht von einer URI.
Allerdings steht dort auch, dass ein ssl://hostname funktionieren sollte.
Sebastian, hast du schon mal geprüft, ob PHP den Hostnamen korrekt in die dahinterstehende IP auflösen kann? Wenn nein, dann liegt eventuell ein DNS-Problem vor. Ich finde es auf der Seite der unterstützten Transporte in PHP gerade nicht, meine aber, dass für SSL-Support auch gewissen SSL-Client-Libraries von PHP benötigt werden bzw. PHP mit SSL-Support kompiliert sein muss. Hast du dahingehend mal dein PHP geprüft?
Viele Grüße,
~ Dennis.
Sebastian, hast du schon mal geprüft, ob PHP den Hostnamen korrekt in die dahinterstehende IP auflösen kann? Wenn nein, dann liegt eventuell ein DNS-Problem vor.
Wie kann ich das?
Ich finde es auf der Seite der unterstützten Transporte in PHP gerade nicht, meine aber, dass für SSL-Support auch gewissen SSL-Client-Libraries von PHP benötigt werden bzw. PHP mit SSL-Support kompiliert sein muss. Hast du dahingehend mal dein PHP geprüft?
Wenn dem so ist kann ich mein Projekt gleich eintüten, ein Schleifchen reinmachen und aus dem Fenster werfen... Wie gesagt, es soll eine Typo3-Extension werden. Wer will eine Typo3-Extension für die man zusätzliche PHP-Libraries braucht?
Viele Grüße,
~ Dennis.
Danke für deine Antwort
Hi Sebastian,
Wie kann ich das?
Schon mal gethostbyname() probiert? Sollte die IP für einen Host name im DNS nachschlagen.
Wenn dem so ist kann ich mein Projekt gleich eintüten, ein Schleifchen reinmachen und aus dem Fenster werfen... Wie gesagt, es soll eine Typo3-Extension werden. Wer will eine Typo3-Extension für die man zusätzliche PHP-Libraries braucht?
Nun ja, die Theorie ist das eine. In der Praxis sollte bei den meisten Providern SSL-Funktionalität gegeben sein.
Viele Grüße,
~ Dennis.
Moin!
Wie siehts aus, wenn du direkt im fsockopen den Pfad mit an gibst?
Sowas wie https://www.google.com:443/accounts/ClientLogin
Wenn du von fsockopen() keine Ahnung hast, dann verhalte dich still. An dem Originalcode von Sebastian hast du jedenfalls nur Verschlechterungen integriert, nichts verbessert.
- Sven Rautenberg
Moin!
Entschuldigung, ich habe versehentlich zu früh abgesendet.
Ich wollte noch meinen PHP-Code anfügen, den ich bisher geschrieben habe:
function login($mail, $pwd){
$fp = fsockopen('ssl://www.google.com', 443);
$request ='POST /accounts/ClientLogin HTTP/1.0
';
$request.='Content-type: application/x-www-form-urlencoded
';
$request.='Content-Length: 300
';
$request.='
';
$request.='Email='.$mail.'&Passwd='.$pwd.'&service=wise&source=typo3-txspreadsheet-x1
';
fwrite($fp, $request);
$resH='';
$resC='';
while($char = fread($fp, 1)){
echo $char;
}}
Zunächst mal: Warum gibst du die Content-Length fix mit 300 an, wo doch dynamisch die Variablen $mail und $pwd im Content drinstehen?
> Warning: fread() [function.fread]: SSL: fatal protocol error in /home/www/web4/html/typo3conf/ext/spreadsheet/sv1/class.tx\_spreadsheet\_sv1.php on line 55
Könnte das dieser Bug sein? <http://bugs.php.net/bug.php?id=23220>
- Sven Rautenberg
--
"Love your nation - respect the others."