Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagedelphi
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;