Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi REST, web servcies und delphi (https://www.delphipraxis.net/132265-rest-web-servcies-und-delphi.html)

r_amse_s 8. Apr 2009 23:03


REST, web servcies und delphi
 
hi,

ich muss ein client für folgendes web service bauen: Yahoo Traffic

hat jemand eine Idee, ob und wie man sowas in einer Delphi App einbauen kann?

finde leider keine Infos darüber und befürchte, dass z.T mit Delphi das nicht möglich ist.

danke!

mjustin 8. Apr 2009 23:13

Re: REST, web servcies und delphi
 
Zitat:

Zitat von r_amse_s
hi,

ich muss ein client für folgendes web service bauen: Yahoo Traffic

hat jemand eine Idee, ob und wie man sowas in einer Delphi App einbauen kann?

finde leider keine Infos darüber und befürchte, dass z.T mit Delphi das nicht möglich ist.

danke!

Mit Indy, Synapse oder einem anderen TCP Kit deiner Wahl kann man eine HTTP Anfrage wie

http://local.yahooapis.com/MapsServi...yvale&state=CA

sicher schnell hinbekommen. Es ist ja 'nur' eine Webadresse, die mit einem GET aufgerufen wird, und daraufhin erhält der HTTP Client einen Text als Antwort zurück.

Also in der Art
Delphi-Quellcode:
Antwort := TIdHTTP1.Get(Anfrage);

Bei REST kann es neben GET auch POST u.a. Anfragetypen geben, aber es ist alles nicht so schwer wie es zuerst aussieht.

r_amse_s 9. Apr 2009 12:44

Re: REST, web servcies und delphi
 
super!
vielen Dank Justin für den Tip!

wie ich gelesen habe, ist die Antwort dann in XML. Wie kann man das am besten auslesen (parser?)?
für Hinweise auf gute Komponenten bin ich sehr dankbar!

Danke!

mjustin 9. Apr 2009 13:13

Re: REST, web servcies und delphi
 
Zitat:

Zitat von r_amse_s
super!
vielen Dank Justin für den Tip!

wie ich gelesen habe, ist die Antwort dann in XML. Wie kann man das am besten auslesen (parser?)?
für Hinweise auf gute Komponenten bin ich sehr dankbar!

Danke!

In Delphi schon eingebaut ist TXmlDocument. Diser kann wahlweise den MSXML Parser verwenden, der auf den meisten PCs wohl installiert ist, aber auch auf einen anderen Parser umgestellt werden (über die Vendor-Property). Es gibt auch - ebenfalls kostenlose - Komponenten wir z.B. OmniXML.

XmlDocument ist aber schon sehr leistungsfähig. Man sollte ihn, wenn man ihn dynamisch erzeugt (zur Laufzeit, anstatt auf ein Formular geworfen), stets mit Interfaces verwenden:

Delphi-Quellcode:
var
  MeinXmlParser: IXmlDocument; // nicht: TXmlDocument

r_amse_s 9. Apr 2009 14:07

Re: REST, web servcies und delphi
 
hmmm, das Ergebnis ist leider nicht xml
wie könnte ich das parsen?

Delphi-Quellcode:
<ResultSet xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/TrafficDataResponse.xsd">
<LastUpdateDate>1239226270</LastUpdateDate>

<Result type="incident">
<Title>Disabled vehicle, on I-280 SB at MAGDALENA AVE</Title>
<Description>Disabled Vehicle</Description>
<Latitude>37.351799</Latitude>
<Longitude>-122.106087</Longitude>
<Direction>SB</Direction>
<Severity>2</Severity>
<ReportDate>1239216918</ReportDate>
<UpdateDate>1239224608</UpdateDate>
<EndDate>1239226432</EndDate>
</Result>
</ResultSet>

mjustin 9. Apr 2009 14:42

Re: REST, web servcies und delphi
 
Zitat:

Zitat von r_amse_s
hmmm, das Ergebnis ist leider nicht xml
wie könnte ich das parsen?

Delphi-Quellcode:
<ResultSet xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/TrafficDataResponse.xsd">
<LastUpdateDate>1239226270</LastUpdateDate>

<Result type="incident">
<Title>Disabled vehicle, on I-280 SB at MAGDALENA AVE</Title>
<Description>Disabled Vehicle</Description>
<Latitude>37.351799</Latitude>
<Longitude>-122.106087</Longitude>
<Direction>SB</Direction>
<Severity>2</Severity>
<ReportDate>1239216918</ReportDate>
<UpdateDate>1239224608</UpdateDate>
<EndDate>1239226432</EndDate>
</Result>
</ResultSet>

Es ist alles da, was XML braucht, und sogar ein XSD Verweis. Was sagt denn der Parser, gibt es eine Fehlermeldung? Falls die optionale XML-Deklaration vermisst wird, kann man

<?xml version="1.0"?>

vor den Inhalt setzen. (siehe http://de.wikipedia.org/wiki/XML-Deklaration)

rwachtel 9. Apr 2009 14:55

Re: REST, web servcies und delphi
 
Zitat:

Zitat von mjustin
[...] Falls die optionale XML-Deklaration vermisst wird, kann man

<?xml version="1.0"?>

vor den Inhalt setzen. [...]

Selbst das liefert Yahoo! eigentlich mit.

r_amse_s 9. Apr 2009 20:09

Re: REST, web servcies und delphi
 
yep, das war es :-)

bei ersten request habe tatsächlich <?xml version="1.0"?> nicht zurückbekommen.

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz