Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1
  • 2

TOPIC: Ervaring met API?

Ervaring met API? 1 year 8 months ago #93670

  • miracle
  • miracle's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 2
  • Karma: 0
Iemand hier ervaring met de API van LimeSurvey. Ik heb het idee dat de documentatie niet klopt en daardoor krijg ik het niet werkend. Wie heeft dit wel werkend?
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93700

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Welke versie van limesurvey gebruik je, en welke call lukt niet? Wat krijg je als resultaat? In het engelstalige forum, en volgens mij ook in de documentatie staat een voorbeeld. Ook in de limesurvey code zelf zit een werkend voorbeeld. Het enige dat je moet aanpassen is de usernaam/wachtwoord combinatie om verbinding te kunnen maken.

Er zijn recent een aantal kleine bugs opgelost in de remote control api, dus misschien helpt upgraden naar de nieuwste versie al.
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93973

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Kijk eens aan ik loop ook al tegen API problemen aan.

Ik gebruik versie 2.05 en om verbinding te maken met de API gebruik ik jQuery in combinatie met de jQuery plugin: jquery-jsonrpc (zie: github.com/datagraph/jquery-jsonrpc).

Voor de jquery-jsonrpc maak ik het volgende javascript aan:
$.jsonRPC.setup({
    endPoint: 'http://10.0.0.2/index.php/admin/remotecontrol/',
    namespace: ''
});
 
var params = {
    "username" : "admin",
    "password" : "test"
};
 
$.jsonRPC.request('get_session_key', {
    params: params,
    success: function(result) {
        console.log('GELUKT:');
        console.log(result);
 
    },
    error: function(result) {
        console.log("MISLUKT:");
        console.log(result);
    }
});

Na het runnen van de code krijg ik in mijn console:
MISLUKT:
Object { 
	"error"   : "Internal Server Error",
	"version" : "2.0"
}

Nu vermoed ik dat ik deze JSON terug krijg van de jQuery plugin.
Simpelweg omdat ik in Firebug kan zien dat ik geen response krijg van de API.


Wanneer ik brows naar:
http://10.0.0.2/index.php/admin/remotecontrol/test

Dan krijg ik netjes te zien:
"Invalid user name or password"


Enige tips trics of howto's zijn erg welkom :)
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93974

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Geen 2.05 gebruiken, die is nog niet stabiel genoeg. In de laatste 2.0+ zou het moeten werken, al heb ik alleen ervaring met het aanroepen van de api vanuit php en niet vanuit jquery.

Naar verwachting komt binnenkort een beta van 2.05 uit, dan ben je meer dan welkom om alles wat je daarin tegenkomt te rapporteren in de bugtracker. Voor nu dus even op 2.0 proberen.

Wat je ook kan proberen is de debug mode aan zetten in je config, daarmee krijg je misschien iets meer info over wat er mis gaat.
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93975

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Ah ik dacht dat ik 2.05 had, maar ik zie nu in de admin dit staan:

Version 2.00+ Build 130317


Dus dat lijkt me goed.


Ik heb inmiddels ook geprobeert om data binnen te trekken via de standaard jQuery $.ajax() functionaliteit, maar dat werkt ook niet.

Het is ook niet dat je een GET kan doen zoals:
http://10.0.0.2/index.php/admin/remotecontrol/get_session_key?username=admin&password=test

Dus dat het maakt het lastig. Ik ga er van uit dat het met Javascript zou moeten lukken.
Gezien JSON typisch bedoeld was voor Javascript ;)
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93986

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Ik heb debug aan gezet, maar verder geen responses daar op.
Ik heb direct maar een tail gezet op de errorlog van apache, maar daar komen ook geen fouten naar voren.
Last Edit: 1 year 8 months ago by FrAgFo0d.
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93987

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Even snel gekeken, het moet een post zijn met content-type application/json en in de body moeten een method, params en een id gezet worden. Ik krijg het zo snel ook niet werkend.
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93989

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Thanks!

Ik had zelf dit in een POST:

id = 1
jsonrpc = "2.0"
method = "get_session_key"
params = { username: "admin",password: "test"}

Ik zal eens kijken of ik kan rommelen met de content-type.
De method had ik en de params ook. ;)
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93991

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
jQuery.ajax ({
url: "http://servernaam/index.php/admin/remotecontrol",
type: "POST",
data: JSON.stringify({method:"get_session_key",params:{username:"admin", password:"test"},id:1}),

contentType: "application/json",
success: function(){
//
}
});

dit werkte voor mij
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 8 months ago #93994

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Thanks ik was heeel dichtbij :)

Ik had net:
 
var params = {
    "method": "get_session_key",
    "params": {
        "username" : "admin",
        "password" : "test"
    },
    id: 1
};
/**/
$.ajax({
    url: "http://10.0.0.2/index.php/admin/remotecontrol",
    type: "POST",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(params),
    error: function(data) {
        console.log('error');
        console.log(data);
    },
    success: function(data) {
        console.log('success');
        console.log(data);
    }
});

Met jouw hulp snapte ik dat ik natuurlijk niet de dataType er bij moest gaan gebruiken.
Dan doe je de contentType teniet.

Thanks :)


Overigens krijg ik nu wel een success, maar geen data terug.
Dus nu even kijken waar dat dan aan ligt.
Last Edit: 1 year 8 months ago by FrAgFo0d.
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.136 seconds
Donation Image