AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

JSON Antworten?

Offene Frage von "jaenicke"
Ein Thema von thechosen1 · begonnen am 17. Apr 2012 · letzter Beitrag vom 19. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2   
thechosen1

Registriert seit: 17. Apr 2012
4 Beiträge
 
#1

JSON Antworten?

  Alt 17. Apr 2012, 20:27
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:
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;
(Alternativ auch über HTTP "POST")

Mit TWebbrowser:
twebbrowser1.navigate('https://graph.facebook.com/me/friends?&access_token=' + token) 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.

Gibt es alternative Komponente, welche mit JSON Antworten umgehen können, oder wie könnte ich das Problem lösen?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
1.570 Beiträge
 
FreePascal / Lazarus
 
#2

AW: JSON Antworten?

  Alt 17. Apr 2012, 20:35
Das Problem wird imho weniger das JSON sein, sondern HTTPS.
Robert
  Mit Zitat antworten Zitat
thechosen1

Registriert seit: 17. Apr 2012
4 Beiträge
 
#3

AW: JSON Antworten?

  Alt 17. Apr 2012, 20:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
389 Beiträge
 
Delphi 2010 Professional
 
#4

AW: JSON Antworten?

  Alt 17. Apr 2012, 21:20
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 Fiddler und IE arbeiten. Das ist ein bisschen blöd, weil du dann erst ein manipuliertes SSL Zertifikat installieren musst, aber so kommst du auch an den Traffic.
Sebastian

Geändert von geskill (17. Apr 2012 um 21:23 Uhr)
  Mit Zitat antworten Zitat
thechosen1

Registriert seit: 17. Apr 2012
4 Beiträge
 
#5

AW: JSON Antworten?

  Alt 17. Apr 2012, 22:23
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:
{
   "data": [
      {
         "name": "Max Mustermann",
         "id": "8989489944"
      },
      {
         "name": "Marianne Mustermann",
         "id": "4556667444"
      }
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).
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:
 
try
 {
  Antwort = myWebClient.DownloadData(GraphURL);
  MessageBox.Show(System.Text.Encoding.ASCII.GetString(Antwort));              
 }
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
(Eine Notlösung wäre es ein weiteres Programm in C# zu schreiben, dass die friendlist zurück an das delphi gibt)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo
Online

Registriert seit: 5. Jan 2005
Ort: Stadthagen
6.450 Beiträge
 
Delphi 2010 Professional
 
#6

AW: JSON Antworten?

  Alt 17. Apr 2012, 22:33
Die Indys brauche auch mit JSON nicht umgehen, weil das ist einfacher Text der zurückgeliefert wird - nur halt strukturiert
Kaum macht man's richtig - schon funktioniert's
Nachdenkliche Menschen denken oft warum sie nicht schon vorher daran gedacht haben.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
1.570 Beiträge
 
FreePascal / Lazarus
 
#7

AW: JSON Antworten?

  Alt 17. Apr 2012, 22:38
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
Fiddler funktioniert auch mit Firefox.
Robert
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#8

AW: JSON Antworten?

  Alt 18. Apr 2012, 00:49
Du benötigst einen JSON-Parser, den es auch in Delphi gibt.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle
Online

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.085 Beiträge
 
#9

AW: JSON Antworten?

  Alt 18. Apr 2012, 06:25
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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
4.827 Beiträge
 
Delphi XE7 Enterprise
 
#10

AW: JSON Antworten?

  Alt 18. Apr 2012, 08:12
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.
Das ist ein Irrglaube.
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf