2016-06-02 3 views
1

Ich versuche, die Ergebnisse der XML-Datei nach der Verwendung einer Google Maps API-Abfrage zu greifen, aber meine Delphi-App wirft einen "IOHandler-Wert ist nicht gültig." Error. Die "IdHTTP1.Get" Zeile scheint der Täter zu sein, aber warum?Versuch, XML-Datei nach Google Maps abzufragen Frage

Mein Ziel ist es, die Breiten- und Längenkoordinaten aus den Ergebnissen der Abfrage zu erhalten und sie in eine Datenbank zu stellen. Hier ist mein Code, der den Fehler erzeugt.

procedure TViewMaps.GetXMLBtnClick(Sender: TObject); 
var 
    lat, lng: String; 
    xml: IXMLDocument; 
    s: TStream; 
begin 
    // Create XML File to hard disk 
    s := TFileStream.Create('mydata.xml', fmCreate); 
    try 
     IdHTTP1.Get('https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=MyKey',s); 
     xml := TXMLDocument.Create(nil); 
      {xml.LoadFromXML(sName), at: xml.ChildNodes.FindNode = ('result') ChildNodes.FindNode ('formatted_address . '); } 

     // Load XML file for data display 
     XMLDocument1.LoadFromFile('mydata.xml'); 
     XMLDocument1.Active := True; 

     //lat := XMLDocument1.DocumentElement; 

    finally 
     XMLDocument1.Active := False; 
     s.Free; 
    end; 
    end; 
+0

Welche Version von Delphi/Indyare verwenden Sie? In älteren Versionen müssen Sie einen SSL-IOHandler selbst erstellen. Vergessen Sie auch nicht, die OpenSSL-Bibliotheken einzubeziehen. – whosrdaddy

+0

@whosrdaddy - Delphi XE6 mit Indy 10.6. – Hackbrew

Antwort

2

Die „ungültig“ Fehler bedeutet eine HTTPS-Anforderung, sondern eine SSL-Komponente auf die TIdHTTP.IOHandler Eigenschaft nicht zugeordnet worden ist, gemacht wird, wie TIdSSLIOHandlerSocketOpenSSL. Siehe auch New HTTPS functionality for TIdHTTP.