![]() |
GET request mit JSON Antwort
Hi,
normalerweise arbeite ich mit RealThinClient um meine Inet Sachen zu machen, aber ich krieg bes da nicht hin im Moment und meine Sub ist im Mai abgelaufen, kann da also gerade nicht nachfragen. Also ich habe eine URL an die ich ein GET request senden kann, die liefert mir ein JSON zurück mit der Antwort. Es geht da um PLZ Abfrage hier in Kolumbien. Die Webseite ist ![]() Zum Bsp gebe ich dort ein : Zitat:
Code:
und die Antwort in JSON sieht so aus :
http://www.codigopostal.gov.co/glow/param/?municipio=Santa%20Marta&departamento=Magdalena&direccion=Cra.%2016%20%231c-20
Code:
Was ich halt gerne hätte ist dass ich meine Kundendaten nehmen kann, wo ich die Felder der Suche schon habe und mit die URL zusammenbaue und die PLZ abfragen kann. Die abfagte senden ging in RTC, aber aus irgendeinem grund kriege ich da immer nur Error 400, was ein 10.-sekunden timeout ist, aber im JSON format, also ist schon eine Antwort.
{"cp":"470001","cp_ampliado":"470001211","direccion_estandar":"KR 16-1 20, 47001000","infor_enriquecimiento":null,"lat":"11.2563645293221","lon":"-74.198816835671","status":"200","wkid":"4326"}
Gibt es noch andere wege ? |
AW: GET request mit JSON Antwort
Zitat:
Aber wenn ja, dann kannst du mit den mitgelieferten HTTP-Komponenten bspw. so die JSON-Antwort erhalten:
Delphi-Quellcode:
uses
System.Net.HttpClient; {$R *.dfm} const ADDRESS = 'http://www.codigopostal.gov.co/glow/param/?municipio=Santa%20Marta&departamento=Magdalena&direccion=Cra.%2016%20%231c-20'; procedure TForm3.Button2Click(Sender: TObject); var HttpClient: System.Net.HttpClient.THTTPClient; Response: System.Net.HttpClient.IHTTPResponse; Content: string; begin HttpClient := THTTPClient.Create; try Response := HttpClient.Get(ADDRESS); if Assigned(Response) then begin if Response.StatusCode = 200 then begin Content := Response.ContentAsString; Memo1.Lines.Add(Content); end; end; finally HttpClient.Free; end; end; |
AW: GET request mit JSON Antwort
Selbstverständlich geht auch die Nutzung des Delphi eigenen REST-Frameworks:
Delphi-Quellcode:
uses
REST.Client, IPPeerClient, System.Json; procedure TForm3.Button1Click(Sender: TObject); var RESTClient: TRESTClient; RESTRequest: TRESTRequest; RESTResponse: TRESTResponse; MyBytes: TBytes; MyJsonValue: TJSONValue; begin RESTClient := TRESTClient.Create(nil); RESTRequest := TRESTRequest.Create(nil); RESTResponse := TRESTResponse.Create(nil); try RESTClient.BaseURL := 'http://www.codigopostal.gov.co'; RESTClient.RaiseExceptionOn500 := False; RESTRequest.Client := RESTClient; RESTRequest.AddParameter('municipio', 'Santa Marta'); RESTRequest.AddParameter('departamento', 'Magdalena'); RESTRequest.AddParameter('direccion', 'Cra. 16 1c-20'); RESTRequest.Resource := 'glow/param'; RESTRequest.Response := RESTResponse; RESTRequest.SynchronizedEvents := False; RESTRequest.Execute; // Alternativ gibt es noch die Möglichkeit das Asyncron auszuführen und // wenn gewünscht automatisch in den Mainthread zurück synchronisieren zu lassen // RESTRequest.ExecuteAsync(MussteFüllen); if RESTResponse.StatusCode = 200 then begin // Hier gibt es mehrere Möglichkeiten den empfangenden Content abzugreifen: // Einmal als reiner String: Memo1.Lines.Add(RESTResponse.Content); // Oder als Bytes-Array: MyBytes := RESTResponse.RawBytes; // Für dich am sinnvollsten wäre das schon geparste JSON-Object/Value: MyJsonValue := RESTResponse.JSONValue; end; finally RESTClient.Free; RESTRequest.Free; RESTResponse.Free; end; end; |
AW: GET request mit JSON Antwort
Danke, die 2. Lösung gefällt mir gut, weil ich die Parameter direkt so reintun kann, wie ich sie schon in der DB habe. Und funktioniert sofort :)
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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