sekarang sudah tidak perlu lagi menggunakan banyak2 komponen. cukup RestRequest dan RestClient.
1. Mengambil JSONValue / JSONObject
contoh output dari json
{ "id_user": "6", "NAMA": "Risandy Ka", "STATUS": "Aku Berada di rumah", "LATITUDE": "", "LONGITUDE": "", "TANGGAL": "2019-08-01 22:56:10" }Code Delphi :
procedure TFMain.Button1Click(Sender: TObject);varjsn : TJSONObject;begin
2. Mengambil JSONarrayDM.RESTClient_status.BaseURL := 'http://localhost/aplikasi/peg_status.php?act=onestatus&id_status=222';DM.RestRequest_status.ExecuteAsync();Sleep(2000);jsn := DM.RESTResponse_status.JSONValue as TJSONObject;Memo1.Text := jsn.Values['STATUS'].Value;TabControl_home.TabIndex := 3;end;
ini jika json nya berbentuk array atau lebih dari 1 data
contoh outputnya
[{ "id_user": "6", "NAMA": "Risandy Ka", "STATUS": "Aku Berada di rumah", "LATITUDE": "", "LONGITUDE": "", "TANGGAL": "2019-08-01 22:56:10" },{ "id_user": "6", "NAMA": "Risandy Ka", "STATUS": "Dalam perjalanan", "LATITUDE": "", "LONGITUDE": "", "TANGGAL": "2019-08-01 22:56:10" },{ "id_user": "6", "NAMA": "Risandy Ka", "STATUS": "Lagi di kampus", "LATITUDE": "", "LONGITUDE": "", "TANGGAL": "2019-08-01 22:56:10" }]Code Delphi :
procedure TFMain.Button1Click(Sender: TObject);diatas adalah cara menggunakan komponen rest. berikut jika ingin menggunakan TNetHTTPClient dan IHTTPRespon menampilkan output json
var
id_user, NAMA, STATUS, LATITUDE, LONGITUDE, TANGGAL, URL : string;
JSN: TJSONObject;
JSNarry : TJSONArray;
begin
JSNarry := DM.RESTResponse_status.JSONValue as TJSONArray;
for i := 0 to JSNarry.Count do
begin
JSN := JSNarry.Items[i] as TJSONObject;
id_user := JSN.Values['id_user'].Value;
NAMA := JSN.Values['NAMA'].Value;
STATUS := JSN.Values['STATUS'].Value;
LATITUDE := JSN.Values['LATITUDE'].Value;
LONGITUDE := JSN.Values['LONGITUDE'].Value;
TANGGAL := JSN.Values['TANGGAL'].Value;
Add_status(id_user, NAMA, STATUS, LATITUDE, LONGITUDE, TANGGAL, LV);
end;
end;
Contoh output json nya jika menggunakan mode post
[jika digunakan di browser tidak akan tampil harus jadi menggunakan restdebugger untuk mengetahui outputnya
{
"id_user":"13",
"id_fb":null,
"NAMA":"VIVI PRATIWI",
"EMAIL":"viri@gmail.com"
}
]
code webservice phpnya
elseif ($act=='login1'){ $EMAIL = $_POST['EMAIL']; $NAMA = $_POST['NAMA']; $data = mysql_query("SELECT id_user, id_fb, NAMA, EMAIL FROM peg_user WHERE EMAIL='$EMAIL' and NAMA='$NAMA'"); if (mysql_num_rows($data)>0){ while ($row = mysql_fetch_assoc($data)){ $respon[] = $row; } } else { } echo json_encode($respon,JSON_PRETTY_PRINT); }nah untuk mengambil value json nya di delphi :
procedure TFMain.Button1Click(Sender: TObject);ingat contoh tadi jika json nya array. jika bukan array tinggal disesuaikan saja.
var
idh : TNetHTTPClient;
params: TStringList;
s, strjsn : string;
httpresult : IHTTPResponse ;
jo: TJSONObject;
jv, jvl:TJSONValue;
begin
idh := TNetHTTPClient.Create(self);
try
params:=tstringlist.Create;
params.AddPair('EMAIL',edt_EMAIL.Text);
params.AddPair('NAMA',edt_NAMA.Text);
httpresult := idh.Post('http://rasoftware.net/aplikasi/service_nugo/peg_user.php?act=login1', params);
finally
idh.Free;
end;
strjsn:=httpresult.ContentAsString();
jvl := tjsonobject.ParseJSONValue(strjsn);
If jvl is tjsonarray then
for jv in (jvl as TJSONArray) do
begin
if jv is tjsonobject then
begin
jo := jv as tjsonobject;
s := jo.GetValue<string>('id_user');
edt_id_user.Text:= s;
end;
end;
end;
sekian sharing saya. jika ada penambahan saya akan ubah dilain waktu.
terimakassih sangat membantu. mau tanya kalau mengakses nya melalui ssl atau https: gmn sis? karena sy coba eror ssl library not found,terimakasih
BalasHapusunduh ssl lib nya
BalasHapus