| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Neuer Benutzer Registriert seit: 03.05.2006
Beiträge: 19
![]() | Hallo, danke für die beiträge. ihr habt absolut recht, ist ja richtig furchbar. Habe nicht gewusst das die formatierung verloren geht. Auf ein neues. Code: <?php
error_reporting(E_ALL);
class CurlReader {
var $body;
var $headers;
var $c;
var $fh;
function CurlReader()
{
$iheaders[]= "Content-Type: text/xml";
$iheaders[]= "Pragma: no-cache";
$this->c = curl_init();
$this->fh = fopen('curl-response-headers.txt','w');
curl_setopt($this->c, CURLOPT_VERBOSE, 1);
curl_setopt($this->c, CURLOPT_HEADER, 1);
curl_setopt($this->c, CURLOPT_STDERR, $this->fh);
curl_setopt($this->c, CURLOPT_SSL_VERIFYPEER, "false");
curl_setopt($this->c, CURLOPT_HTTPHEADER, $iheaders);
curl_setopt($this->c, CURLOPT_POST, 1);
curl_setopt($this->c, CURLOPT_POSTFIELDS, 'hier steht der HTTPBody');
curl_setopt($this->c, CURLOPT_HEADERFUNCTION, array($this,'parseHeader'));
curl_setopt($this->c, CURLOPT_WRITEFUNCTION, array($this, 'parseBody'));
}
function parseHeader($curl, $data)
{
list($header, $value) = explode(': ', $data, 2);
if (strlen($header = trim($header)))
{
$this->headers[$header] = trim($value);
}
return strlen($data);
}
function parseBody($curl, $data)
{
$this->body .= $data;
return strlen($data);
}
function get($url)
{
$this->headers = array();
$this->body = '';
curl_setopt($this->c, CURLOPT_URL, $url);
return curl_exec($this->c);
}
function close()
{
curl_close($this->c);
fclose($this->fh);
}
function getBody()
{
return $this->body;
}
function getHeader()
{
return $this->header;
}
}
//Klasse wird an dieser Stelle benutzt
$c = new CurlReader();
$page=$c->get('https://irgendeinserver.de');
print $c->getbody();
$ergbody= $c->getBody();
$ergheader= $c->getHeader();
$c->close();
?>
Das problem ist das die variable $ergbody und $ergheader leer bleiben. Im Debug modus kann ich aber sehen das Daten vearabeiten werden. Zitat:
Danke gruss vj | |
| |
| | |||
| Gast
Beiträge: n/a
| Zitat:
Zitat:
PHP-Code: speichern. Sollte ja so zum gleichen Ergebnis führen und erspart Dir somit Deine Methode und den Ärger mit ihr... | ||
| | |
| Neuer Benutzer Registriert seit: 03.05.2006
Beiträge: 19
![]() | Hallo, erstmal danke für die tipps, also ich verwende Code: <?php curl_setopt($this->c, CURLOPT_RETURNTRANSFER, 1); ?> Code: <?php curl_setopt($this->c, CURLOPT_RETURNTRANSFER, true); ?> Code: <?php curl_setopt($this->c, CURLOPT_WRITEFUNCTION, array($this, 'parseBody')); ?> ok wie du gesagt hast hatt ich auch schon gemacht wollt das ganze einwenig strukturieren, aber habe nicht erwartet das dies so kompliziert wird. Mitlerweile hab ich es hin bekommen, werden den code demnächst posten gruss vj |
| |
| | |
| Neuer Benutzer Registriert seit: 03.05.2006
Beiträge: 19
![]() | Hallo, ich hab jetzt einwenig weiter gemacht, ich verstehe nicht warum die klasse weiter oben nicht funktioniert. sobald curlexec ausgeführt wurde steht in der $this->header variable nichts mehr. wenn ich in den debug modus gehe sehe ich wie die variable gefüllt wird. Woran könnte das liegen, was muss man anderes machen? gruss vj |
| |
| | |||
| Gast
Beiträge: n/a
| Zitat:
angegeben - mit der Kopie des Objekt und nicht mit einer Referenz. Deine Callback-Funktionen füllen also nicht die Instanzvariablen Deines Objekts, sondern die einer Kopie von diesem. Hättest Du Dir die Antworten durchgelesen und versucht zu verstehen, wüsstest Du auch, wie das zu verhindern ist: PHP-Code: muss auch hier explizit mit Referenzen gearbeitet werden: PHP-Code: im Konstruktor, sondern beispielsweise erst in Deiner get()-Methode zu setzen. Oder aber Du löst Dein Problem doch über RETURNTRANSFER - wie oben vorgeschlagen, da Deine Methode ja faktisch keinerlei Zusatzfunktionalität implementiert und somit in dieser Form schlichtweg überflüssig ist. Zitat:
kein wirkliches Problem. Deine get()-Methode kann den Rückgabewert in Abhängigkeit davon, ob Daten zurückgeliefert wurden, ja selber definieren. | ||
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Variable aus Klasse herausbekommen | GSJLink | PHP Tipps 2008 | 7 | 16.02.2008 22:25 |
| String-Parser Klasse - was muss rein? | Matze | PHP Tipps 2007 | 2 | 08.04.2007 22:14 |
| Eine Klasse mehrere Dateien | sn00py | PHP Tipps 2006 | 6 | 08.05.2006 11:40 |
| mehr als eine Klasse einbinden | Alpha Centauri | PHP-Fortgeschrittene | 4 | 13.04.2006 20:56 |
| aus einer funktion auf funktion anderer klasse zugreifen | seejay | PHP Tipps 2006 | 3 | 05.01.2006 10:37 |
| Klasenname einer nicht instanziierten Klasse | DerDesian | PHP Tipps 2007 | 9 | 30.11.2005 13:13 |
| Instanz einer Klasse in einer anderen Klasse verwenden | Buhmann | PHP-Fortgeschrittene | 7 | 28.10.2005 23:12 |
| [Erledigt] Führerschein für Klasse A+B.. Preis OK??? | Off-Topic Diskussionen | 20 | 13.07.2005 18:44 | |
| Rückgabewert auf einer Klasse anders als in der Klasse | micbur | PHP Tipps 2005-2 | 6 | 10.06.2005 15:06 |
| Problem mit Übergabe einer Klasse in PHP4 | PHP-Fortgeschrittene | 10 | 08.01.2005 21:00 | |
| [Erledigt] PHP nachträglich mit CURL Support ausstatten | PHP-Fortgeschrittene | 2 | 20.12.2004 16:19 | |
| Klasse holt sich die Klasse | PHP-Fortgeschrittene | 9 | 07.10.2004 11:53 | |
| [Erledigt] Brauche Hilfe bei meiner ersten Klasse | PHP-Fortgeschrittene | 9 | 24.09.2004 17:09 | |
| Klassenobjet in anderer Klasse benutzen | inu | PHP Tipps 2004 | 6 | 19.09.2004 10:58 |
| Klasse ändern | UniQ | PHP Tipps 2004 | 5 | 24.08.2004 14:46 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| curl klasse, php curl class, curl explode, curl class php, function get xml($curl), curl php klasse, curl class, curlopt_writefunction class, php curlopt_writefunction, curl in klasse, curl curlreader java, php curl liefert nur header, writefunction curl array c, curl in class verwenden, curl in klasse verwenden, curl php curlopt_headerfunction parse body, curl php curlopt_headerfunction klasse, php curl header parse explode, curl_init aus klasse, curl php class |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.