Piremilok
28-01-2008, 19:10
Hallo,
ich muss zu einer Seite verbinden und Daten abfragen, doch leider habe ich da ein kleines Problem:
Fatal error: Uncaught exception 'VerboseException' with message 'Malformed AMF message, connection may have dropped' in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php:149
Stack trace:
#0 [internal function]: amfErrorHandler(1024, 'Malformed AMF m...', '/var/www/crypt-...', 149, Array)
#1 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(149): trigger_error('Malformed AMF m...')
#2 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(121): AMFDeserializer->readHeader()
#3 /var/www/web102/public_html/amf-core/app/Filters.php(28): AMFDeserializer->deserialize(Object(AMFObject))
#4 /var/www/web102/public_html/amf-core/app/Gateway.php(166): deserializationFilter(Object(AMFObject))
#5 /var/www/web102/public_html/gateway.php(181): Gateway->service()
#6 {main}
thrown in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php on line 149
Die Verbindung wurde früher per Flash hergestellt und ich weiß nicht, wie die das ganze gehandelt haben.
Meine derzeitige Funktion:function PostToHost($host, $path, $data_to_send) {
$fp = fsockopen($host, 80);
//printf("Open!\n");
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-amf\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Keep-Alive: 30\r\n");
fputs($fp, "Connection: keep-alive\r\n");
//fputs($fp, "Connection: close\r\n");
fputs($fp, $data_to_send);
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
return $res;
}
Ich sehe bei der Sache eigentlich 2 Probleme:
1. Die Daten werden vom Flash-File komisch versendet. Es ist eine POST-Anfrage, jedoch werden keine POST-Parameter übergeben, sondern einfach nur Content: getPage/4
Members
Als POST-Parameter wird mir gar nichts angezeigt (leer).
Ich habe jetzt halt mal anstatt in der Variable $data_to_send die POST-Variablen halt mal den Content so reingeschrieben.
2. und wohl eher das eigentliche Problem:
Die oben angezeigte Fehlermeldung kommt, wenn ich Connection: close mache. Nach der Fehlermeldung zu urteilen schätze ich, dass er etwas braucht, bis er mir endgültig antworten kann und ich die Verbindung zu schnell beende.
Benutze ich aber Keep-Alive und Connection: keep, dann läd mir die Seite 60 Sekunde und bricht mit einem MaxTimeOut ab.
Ich mache irgendetwas falsch. Aber was?
Konnte auch über die Suche und im Netz nicht wirklich etwas entdecken...
vielen Dank.
gruß
Piremilok
ich muss zu einer Seite verbinden und Daten abfragen, doch leider habe ich da ein kleines Problem:
Fatal error: Uncaught exception 'VerboseException' with message 'Malformed AMF message, connection may have dropped' in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php:149
Stack trace:
#0 [internal function]: amfErrorHandler(1024, 'Malformed AMF m...', '/var/www/crypt-...', 149, Array)
#1 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(149): trigger_error('Malformed AMF m...')
#2 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(121): AMFDeserializer->readHeader()
#3 /var/www/web102/public_html/amf-core/app/Filters.php(28): AMFDeserializer->deserialize(Object(AMFObject))
#4 /var/www/web102/public_html/amf-core/app/Gateway.php(166): deserializationFilter(Object(AMFObject))
#5 /var/www/web102/public_html/gateway.php(181): Gateway->service()
#6 {main}
thrown in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php on line 149
Die Verbindung wurde früher per Flash hergestellt und ich weiß nicht, wie die das ganze gehandelt haben.
Meine derzeitige Funktion:function PostToHost($host, $path, $data_to_send) {
$fp = fsockopen($host, 80);
//printf("Open!\n");
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-amf\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Keep-Alive: 30\r\n");
fputs($fp, "Connection: keep-alive\r\n");
//fputs($fp, "Connection: close\r\n");
fputs($fp, $data_to_send);
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
return $res;
}
Ich sehe bei der Sache eigentlich 2 Probleme:
1. Die Daten werden vom Flash-File komisch versendet. Es ist eine POST-Anfrage, jedoch werden keine POST-Parameter übergeben, sondern einfach nur Content: getPage/4
Members
Als POST-Parameter wird mir gar nichts angezeigt (leer).
Ich habe jetzt halt mal anstatt in der Variable $data_to_send die POST-Variablen halt mal den Content so reingeschrieben.
2. und wohl eher das eigentliche Problem:
Die oben angezeigte Fehlermeldung kommt, wenn ich Connection: close mache. Nach der Fehlermeldung zu urteilen schätze ich, dass er etwas braucht, bis er mir endgültig antworten kann und ich die Verbindung zu schnell beende.
Benutze ich aber Keep-Alive und Connection: keep, dann läd mir die Seite 60 Sekunde und bricht mit einem MaxTimeOut ab.
Ich mache irgendetwas falsch. Aber was?
Konnte auch über die Suche und im Netz nicht wirklich etwas entdecken...
vielen Dank.
gruß
Piremilok
