...
Code Block |
---|
b:= JsonNewDocFromjson('{"id":"A000173","group":12,"department":1,"float":12.32,"name":"3.3. A3 + F1 P4suora erikois","name2":""}'); maara := jsongetcount( b ); id := jsongetvalue(b, "id"); for i:= 0 to jsongetcount(b)-1 do begin showmessage(jsongetname(b,i)+'='+jsontostring ( jsongetvalue(b,i,true))); end; |
REST Rajapinta
function RestCall(Url: string; data: String; BasicAuth_username: string; Basic_Auth_password: string; var status: integer; var statustxt: string; method: string='post'): string;
Tällä funktiolla voidaan tehdä rest kutsu. vaatii restcall.dll:n olemassaolon, tämä dll päivittyy skj:n mukana. Parametri
- URL: osoite ja parametrit esim https://api.liittyma.com/setproductdata?identification=foobar
- data: Post metodin lähetettävä data. jos method on get, tämän voi jättää tyhjäksi
- Basic_Auth_username, Basic_Auth_password jos palvelin haluaa basica autentication niin niiden salasanat
- status: muuttuja johon laitetaan pyynnön status. 200 = OK
- statustxt: status selväkielisenä
- method: kutsun metodi joko post (oletus, ei tarvitse laittaa) tai get. Kirjankoolla ei väliä.
- Paluuarvona tulee palvelimen lähetämä vastaus
Code Block | ||
---|---|---|
| ||
var
s,s1,status,statustxt;
b,n;
nro;
begin
s := restCall('https://t.skj.fi/tapahtuma/products?apikey=wont_tell_you','{"name":"taas uusi tuote"}', '', '', status, statustxt);
showmessage(s+#13+inttostr(status)+#13+inttostr(statustxt));
if status=200 then
begin
b:= JsonNewDocFromjson(s); // b on koko dokkari
n := jsongetvalue(b,'products'); // n : products elementti, joka on array yhdestä tuotteesta
n := jsongetvalue(n,0,true); // n on tämän jälkeen eka alkio tuotearraysta
nro := jsongetvalue(n,'id'); // otetaan vastauksesta id - tuotenumero
s1 := restCall('https://t.skj.fi/tapahtuma/products/'+nro+'?apikey=wont_tell_you','', '', '', status, statustxt,'get');
showmessage(s1); // s ja s1 pitäisi olla samat
b := jsonnewdoc;
b := jsonaddvalue(b, 'id', nro);
b := jsonaddvalue(b, 'group', 12);
b := jsonaddvalue(b, 'name', 'lahden kotiin');
s := restCall('https://t.skj.fi/tapahtuma/products?apikey=wont_tell_you', b, '', '', status, statustxt);
showmessage(s);
end;
end;
|