![]() |
JSON Antworten?
Ich versuche mit Delphi auf die Facebook Graph API zu zugreifen:
(Genau genommen möchte ich die Freundesliste eines Nutzers auslesen) Mit Indy:
Delphi-Quellcode:
(Alternativ auch über HTTP "POST")
procedure TForm1.Button1Click(Sender: TObject);
var sResponse: string; begin sResponse := IdHTTP1.GET('https://graph.facebook.com/me/friends?&access_token=' + token); finally Data.Free; end; Mit TWebbrowser:
Delphi-Quellcode:
Allerdings können weder Indy noch TWebbrowser mit JSON umgehen. Indy gibt einen Zugriffsverletzungsfehler aus, wärend TWebbrowser das InternetExplorer Download Fenster öffnet und die Meldung zeigt, dass die angegebene Seite nicht heruntergeladen werden kann.
twebbrowser1.navigate('https://graph.facebook.com/me/friends?&access_token=' + token)
Gibt es alternative Komponente, welche mit JSON Antworten umgehen können, oder wie könnte ich das Problem lösen? |
AW: JSON Antworten?
Das Problem wird imho weniger das JSON sein, sondern HTTPS.
|
AW: JSON Antworten?
TWebbrowser sollte mit SSL umgehen können, und IdHTTP verwende ich zusammen mit IdSSLIOHandlerSocket1 und der Open SSL libary. Ich habe es natürlich bereits (erfolgreich) an anderen Seiten ausprobiert. Hinzukommend kann ich auf Facebook Open Graph Links die nur einen String zurück geben aber dennoch über HTTPS aufgerufen werden erfolgreich benutzen.
Somit liegt es nicht an der Verwendung von HTTPS. |
AW: JSON Antworten?
Spiel das ganze am besten mit dem Opera Browser nach und logge die Aktivität mit Wireshark. Dann verwende genau die Parameter die der Opera Browser benutzt hat; so muss es funktionieren ;)
EDIT: Sehe gerade das geht via HTTPS, da muss du dann ![]() |
AW: JSON Antworten?
Das Problem ist, dass der Internetexplorer diese Links ebensowenig handlen kann: Geb ich meine URL: "https://graph.facebook.com/me/friends?access_token=AAAAAAxxxxxxx" in die Adressleiste des IExplorers (ver. 8) ein tritt das von mir im Zusammenhang mit dem TWebbrowser beschriebene Phänomän auf: Anstelle die Antwort im Browser darzustellen öffnet sich das IE Download-Fenster. In der Regel tritt dazu die beschriebene Fehlermeldung auf.
Da IE selbst nicht richtig mit der Anfrage umgehen kann ich leider auch mit Fiddler nicht viel anfangen :( Verwende ich hingegen Firefox oder Opera bekomm ich die erwartete Darstellung im Browser:
Code:
Ich muss zugeben, dass ich zwar schon eine Menge Web-basierte Programme in Delphi geschrieben habe aber bisher nie auf solche Probleme gestoßen bin und daher in diesem Bereich noch Anfänger bin (auch hinsichtlich Wireshark).
{
"data": [ { "name": "Max Mustermann", "id": "8989489944" }, { "name": "Marianne Mustermann", "id": "4556667444" } Bei meinen Recherchen bin ich auf verschiedene Quellen gestoßen in denen behauptet wird, dass die Indy Komponente überhaupt nicht mit JSON umgehen kann) Ich frage mich, ob es nicht eine einfache Methode gibt, die JSON Antwort als TStrings zu bekommen? In Visual C# lässt es sich beispielsweiße ziemlich einfach realisieren: (Kan man in Delphi auf diese .NET Funktion zugreifen?)
Code:
Dummerweiße habe ich bereits mehrere Wochen in die restlichen Teile des Programms gesteckt (FB Chat, Photoupload etc.) und möchte deswegen ungern auf C# umsteigen ;)try { Antwort = myWebClient.DownloadData(GraphURL); MessageBox.Show(System.Text.Encoding.ASCII.GetString(Antwort)); } (Eine Notlösung wäre es ein weiteres Programm in C# zu schreiben, dass die friendlist zurück an das delphi gibt) |
AW: JSON Antworten?
Die Indys brauche auch mit JSON nicht umgehen, weil das ist einfacher Text der zurückgeliefert wird - nur halt strukturiert :)
|
AW: JSON Antworten?
Wenn es die anderen Browser annehmen, dann könnte es auch in Richtung Content-Type gehen, afaik verhält sich der IE da manchmal komisch :gruebel:
Fiddler funktioniert auch mit ![]() |
AW: JSON Antworten?
Du benötigst einen
![]() |
AW: JSON Antworten?
Das kann ja alles sein, aber sein Problem ist Momentan eher, dass Indy eine Zugriffsverletzung ausgiebt. TIdHTTP kümmert sich ja nicht um den Inhalt, sondern lädt ihn nur runter. Es muss nachwievor an HTTPS liegen.
TWebBrowser ist m.E. dafür sowieso absolut nicht das richtige. Liebe Grüße, Valentin |
AW: JSON Antworten?
Zitat:
Es gibt mehrere Seiten, bei denen Indy mit einer Zugriffsverletzung aussteigt. Da bisher aber weder die genaue Exception noch der Stacktrace gepostet wurden, kann ich dazu auch nix näheres sagen... bisher ließ sich das immer lösen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz