tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1434
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LongDonJohn LongDonJohn ist offline Mitglied Silber
    Registriert seit
    Jan 2006
    Ort
    Remscheid
    Beiträge
    59
    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-Code:
    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
     

  2. #2
    birnkammer birnkammer ist offline Mitglied Platin
    Registriert seit
    Dec 2004
    Beiträge
    666
    Hallo,

    Versuchs doch einfach mit file_get_contents() (wenn url_allow_fopen auf on ist) oder mit fsockopen():

    mal mit file_get_contents():
    PHP-Code:
    $response file_get_contents("http://maps.google.com/maps/geo?q=Ort&output=xml&key=key"); 
     
    Nichts kann existieren ohne Ordnung - Nichts kann entstehen ohne Chaos
    (Albert Einstein)

  3. #3
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    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.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  4. #4
    LongDonJohn LongDonJohn ist offline Mitglied Silber
    Registriert seit
    Jan 2006
    Ort
    Remscheid
    Beiträge
    59
    @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
     

  5. #5
    LongDonJohn LongDonJohn ist offline Mitglied Silber
    Registriert seit
    Jan 2006
    Ort
    Remscheid
    Beiträge
    59
    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-Code:
    <?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...

    Die zweite Zeile verstehe ich noch nicht ganz - ist das mit dem localhost da richtig, oder muss ich das mit irgendwas ersetzen?
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du musst dich mit dem Host „maps.google.com“ verbinden und nicht mit „localhost“. Und der URL-Pfad ist dann einfach nur „/maps/geo“.
     
    Markus Wulftange

  7. #7
    LongDonJohn LongDonJohn ist offline Mitglied Silber
    Registriert seit
    Jan 2006
    Ort
    Remscheid
    Beiträge
    59
    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...
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 13.03.10, 14:46
  2. WebService Request mit Umlaute/Sonderzeichen -> Bad Request
    Von StehtimSchilf im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 19.02.10, 12:23
  3. HTTP-Request mit QT
    Von cesupa im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 22.02.08, 19:25
  4. Http-request ?!
    Von mIschKo im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 03.10.07, 18:32
  5. Http Request
    Von NanoNuna im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.04.07, 10:55