HTTP Request an einen Webservice

LongDonJohn

Mitglied
Hallo zusammen,

ich möchte wie der Titel schon sagt, einen HTTP-Request an einen Webservice richten. Um ein wenig konkreter zu werden: ich möchte den Geocoder von Google nutzen, um den Längen- und Breitengrad zu einem Ort als Response zu erhalten.

Leider scheitere ich daran, wie ich mit PHP diesen Request absetzen muss. In der Dokumentation von Google steht, dass der Aufruf wie folgt aussehen muss:

PHP:
http://maps.google.com/maps/geo?q=Ort&output=Format&key=Schluessel

Würde man als output jetzt xml wählen, bekäme man als response die Daten als XML geliefert.

Nur wie mache ich den Aufruf über PHP. Habe irgendwo gelesen, für sowas müsste ich mit einem Proxy arbeiten... Klingt nicht so, als würde es das einfacher machen...

Danke für eure Hilfe!

Gruß
John
 
Funktionen wie file_get_contents() oder fopen(), also Dateisystemfunktionen, wuerde ich in diesem Fall nicht nutzen. Das Problem dabei ist, wie bereits erwaehnt wurde, die Abhaengigkeit von allow_url_fopen.
Der Weg ueber fsockopen() ist hier der weitaus sicherere, jedoch auch etwas komplizierter.
Aber moeglicherweise kann Dir meine HTTP-Klasse dabei etwas helfen.
 
@birnkammer:
Wäre super gewesen, wenn dein Vorschlag funktioniert hätte. Ich bekomme zwar eine Antwort vom Webservice, allerdings nur, dass es so nucht geht. Ihm fehlt scheinbar ein Header oder was weiß ich...

@Dennis:
Ich bin froh, dass es Menschen wie dich gibt, die viel Zeit in die Entwicklung solcher Scripts stecken und diese dann frei zur Verfügung stellen! Erstmal ein großes Danke dafür!

Allerdings verstehe ich trotz aufmerksamen Durchlesens deiner Anleitung nicht mal ansatzweise wie ich das in meinem Fall nutzen kann...

Vielleicht könntest du mir kurz erklären, wie ich die Funktion mit der Adresse und den drei Variablen aufrufen muss, damit es hoffentlich klappt...

Vielen Dank im Voraus!

Gruß
John
 
Ha - da konnte man ja noch weiter nach unten Scrollen in deinem Tutorial... (Wer scrollen kann ist klar im Vorteil!)

Ich habe versucht dein Beispiel umzubauen, so wie ich es verstanden habe:

PHP:
<?php 
require("httpconnection.class.php");
$http=new httpconnection("localhost");
$data=$http->get("http://maps.google.com/maps/geo","keq=GoogleKey&q=gesuchterOrt&output=xml", false);
echo nl2br(print_r($data['head'],true));
echo $data['body'];
unset($http); 
?>

Ich erhalte zwar ein paar Infos über den Server, auf dem ich das Script dann laufen lasse, aber nicht die gewünschte Antwort von Google... :confused:

Die zweite Zeile verstehe ich noch nicht ganz - ist das mit dem localhost da richtig, oder muss ich das mit irgendwas ersetzen?
 
Du musst dich mit dem Host „maps.google.com“ verbinden und nicht mit „localhost“. Und der URL-Pfad ist dann einfach nur „/maps/geo“.
 
Ah - richtig! Man habe ich heute ein Brett vor dem Kopf!

So - jetzt bekomme ich im body die Antwort vom Goggle-Server, aber die ist noch nicht richtig.

Was ich bei Google rausfinden konnte ist, dass der Server wohl guckt was bei der Abfrage im Header steht. Vielleicht ist meine Frage ja dumm, aber was steht denn da in dem Header, wenn ich die Anfrage so abschickt. Für Google muss der wohl entweder leer sein, oder eindeutig zeigen, dass die Anfrage von der Domain kommt für die der Schlüssel registriert wurde...
 
Zurück