Ich hatte mit dem Beitrag "Beispiel RestAPI" (http://www.lazarusforum.de/viewtopic.php?f=15&t=11417)
schon mal das Thema RestAPI und schreiben der Daten in ein ListView auf dem Plan.
Nun muß ich das ganze leider auch mit einem Proxy im Hintergrund zum laufen bringen, was bisher nicht notwendig war.
Leider weis ich zu wenig über Proxy im zusammenhang mit fphttpclient um das Beispielprogramm auch mit Proxy zum Laufen zu bekommen.
Kann mir da jemand unter die Arme greifen?
Bei dem Desktop vom Beispielprogramm ist ein Button "Button1" und ein einfaches ListView1 (3 items, ViewStyle: vsReport)
Gruß
Michael
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Grids, StdCtrls, ComCtrls, VirtualTrees, fphttpclient, fpjson, jsonparser,
jsonscanner;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
ListView1: TListView;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
function GetData: String;
function ParseJson(const Json: String): TJSONArray;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Data : TJSONArray;
DataString : String;
o : TJSONObject;
i : Integer;
begin
Screen.Cursor:=crHourGlass; //crDefault
DataString := GetData;
try
ListView1.BeginUpdate;
ListView1.Clear;
Data := ParseJson(DataString);
for i := 0 to (Data.Count - 1) do begin
o := Data.Objects[i];
ListView1.Items.Add;
ListView1.Items.Item[i].Caption:=o.Strings['id'];
ListView1.Items.Item[i].SubItems.Add(o.Strings['userId']);
ListView1.Items.Item[i].SubItems.Add(o.Strings['title']);
end;
finally
FreeAndNil(Data);
ListView1.EndUpdate;
Screen.Cursor:=crDefault; //crHourGlass
end;
end;
function TForm1.GetData: String;
var
Client: TFPHTTPClient;
resp_code:integer;
resp_text:string;
begin
try
Client := TFPHTTPClient.Create(nil);
// die notwendigen dll sind vom Laptop-Verzeichnis C:\ProgramData\WebEx\WebEx\T30_MC
// libeay32.dll
// ssleay32.dll
Result := Client.Get('http://jsonplaceholder.typicode.com/todos');
//Result := Client.Get('https://jsonplaceholder.typicode.com/todos');
//Result := Client.Get(Edit1.Text);
finally
resp_code:=client.ResponseStatusCode;
resp_text:=client.ResponseStatusText;
//showmessage('Code '+inttostr(resp_code)+' -- '+resp_text);
FreeAndNil(Client);
end;
end;
function TForm1.ParseJson(const Json: String): TJSONArray;
begin
//with TJSONParser.Create(Json, [joUTF8]) do begin
with TJSONParser.Create(Json, true) do begin
Result := Parse as TJSONArray;
Free;
end;
end;
end.