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;