Google Calendar mit PHP?

Hallo,

damit komm ich nicht so richtig weiter wenn ich versuche eibe Liste der Kalender zu bekommen

PHP:
$file = "http://www.google.com/calendar/feeds/default/allcalendars/full";


$fp = fsockopen($file, 80, $errno, $errstr, 30);
if (!$fp) 
	{
    echo "$errstr ($errno)<br />\n";
	} 
else 
	{ 
    $out = "GET / HTTP/1.1\r\n";
    $out .= $header;

    fwrite($fp, $out);
    while (!feof($fp)) 
		{
        echo fgets($fp, 4096);
    	}
    fclose($fp);
	}

bekomme ich immer ein

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/web1/html/test/test/google.php on line 58

Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.google.com/calendar/feeds/default/allcalendars/full:80 in /var/www/web1/html/test/test/google.php on line 58
Success (0)

Woran kann das liegen?
 
Zuletzt bearbeitet:
Hallo,
dein Aufruf von fsockopen ist falsch.
Die Funktion Fsockopen öffnet eine Verbindung zu einem Server. Das ist wie Telefonhörer abnehmen und wählen, mehr erstmal nicht.
In der Zeile mit "GET ..." kommt dann der ReQuest der Seite, das ist dann quasi sprechen.
Also focksopen(host, port ...) und GET /webseite

Also um dich nicht ganz zu verwirren hier einfach Code:

PHP:
$file = "http://www.google.com/calendar/feeds/default/allcalendars/full";
$url = parse_url($file);
// $url['host'] ist dann www.google.com
// $url['path'] ist dann /calendar/feeds/default/allcalendars/full

$fp = fsockopen($url['host'], 80, $errno, $errstr, 10);
if (!$fp) 
    {
    echo "$errstr ($errno)<br />\n";
    } 
else 
    { 
    $out = "GET ".$url['path']." HTTP/1.1\r\n";
    $out .= $header;

    fwrite($fp, $out);
    while (!feof($fp)) 
        {
        echo fgets($fp, 4096);
        }
    fclose($fp);
    }
 
Hallo,

jetzt passiert nichts mehr. Er nutzt den Timeout voll aus und macht dann nichts mehr. Keine Ausgabe der Rückgabe,...?!

habe jetzt hinter dem Auth_header ein \n\r angefügt

PHP:
$file = "http://www.google.com/calendar/feeds/default/allcalendars/full";
$url = parse_url($file);
// $url['host'] ist dann www.google.com
// $url['path'] ist dann /calendar/feeds/default/allcalendars/full

$fp = fsockopen($url['host'], 80, $errno, $errstr, 30);
if (!$fp) 
    {
    echo "$errstr ($errno)<br />\n";
    } 
else 
    { 
    $out = "GET ".$url['path']." HTTP/1.1\r\n";
    $out .= $authheader."\r\n";

    fwrite($fp, $out);
    while (!feof($fp)) 
        {
        echo fgets($fp, 4096);
        }
    fclose($fp);
    }


aber jetzt bekomme ich diesen Fehler

HTTP/1.1 302 Moved Temporarily Set-Cookie: S=calendar=ulYjAvszAIM;Expires=Sat, 27-Dec-2008 09:10:59 GMT Location: http://www.google.com/calendar/feeds/default/allcalendars/full?gsessionid=ulYjAvszAIM Content-Type: text/html; charset=UTF-8 Cache-control: private Content-Length: 267 Date: Fri, 28 Dec 2007 09:10:59 GMT Server: GFE/1.3
Moved Temporarily
The document has moved here.
 
Bei einem HTTP Error 302 muss dein script den aufruf abbrechen und stattdessen das File von der in "Location" angegeben URL laden.

Das sind ganz normale Header Redirects. Aber da es nur 2 Moved Temporarily ist, würde ich nicht die neue URL Fest eintragen. Sondern eben einen 2. Request... einen 3. oder wie auch immer machen.

Dein script kann ja die HTTP Codes auswerten und je nachdem entscheiden. 404 ist ja recht bekannt das etwas nicht existiert. Code 200 ist so z.B. das OK das der Server nun hinter dem header und einem \n\n den Body sendet.
 
Versteh ich jetzt nicht. Laut Doku sollte der Aufruf eine Liste mit Kalendern per XML zurückgeben. Wie komm ich den jetzt an diese Daten ran?
 
Auf der in Location angegeben URL warscheinlich, solche weiterleitungen sind ja alltägliches Zeugs, damit muss man eben einfach umgehen.
 

Neue Beiträge

Zurück