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

TOPIC: Ervaring met API?

Ervaring met API? 1 year 5 months ago #93995

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Zou je een voorbeeldje in de documentatie willen zetten?
Bij mij werkte het met de charset erbij trouwens ook niet.
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94000

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Ik ben nog een beetje n00b hier hoor ;)
Voorbeeldje in de documentatie?

Ik heb nu dit:
var params = {
    "method": "get_session_key",
    "params": {
        "username" : "admin",
        "password" : "test"
    },
    id: 1,
    jsonrpc: "2.0"
};
 
 
$.ajax({
    url: "http://LimeSurvey/index.php/admin/remotecontrol",
    type: "POST",
    contentType: "application/json",
    data: JSON.stringify(params),
    error: function(data) {
        console.log('error');
        console.log(data);
    },
    success: function(data) {
        console.log('success');
        console.log(data);
    }
});

Maar dit levert nog niets op. Althans wel een success geen data.

Ik bedenk mij ook dat als je de API vanaf buitenaf (dus client op andere server) wilt hebben
dat json dan niet eens werkt omdat je niet zomaar een API call mag doen op de server van buitenaf.


Maar laat me even weten wat je bij de documentatie wilt zien.
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94008

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
dataType: 'json'

dan krijg je een beter resultaat
jQuery.ajax ({
url: "http:/server/index.php/admin/remotecontrol",
type: "POST", 
dataType: 'json',
data: JSON.stringify({method:"get_session_key",params:{username:"admin", password:"test"},id:1}),
contentType: "application/json",
complete: function (xhr, status) { 
                 data = $.parseJSON(xhr.responseText);  
                 $.each(data, function(index, val) {
    console.log(index + '=>' +  val);
});
} 
});
---
Menno Dekker
Last Edit: 1 year 5 months ago by mdekker.
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94009

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Ik heb nog eens gekeken naar het voorbeeld van de Request Header in de API documentatie.
Request:
  HTTP headers:
    content-type=application/json
    connection=Keep-Alive
    host=mylimesurveyhost.com
    content-length=65
    user-agent=Apache-HttpClient/4.2.2 (java 1.5)
 
  Post body:
    {"method":"get_session_key","params":{"username":"admin","password":"mypassword"},"id":1}

En dit zijn mijn request headers:
    HTTP headers:
	Accept	*/*
	Accept-Encoding	gzip, deflate
	Accept-Language	en-US,en;q=0.5
	Content-Length	83
	Content-Type	application/json; charset=UTF-8
	Host	10.0.0.2
	Referer	http://10.0.0.2/
	User-Agent	Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
	X-Requested-With	XMLHttpRequest
 
    Post body:
	{"method":"get_session_key","params":{"username":"admin","password":"test"},"id":1}

De Post Body is in ieder geval gelijk.
In de content type heb ik de charset er bij staan.
Ik heb geen connection=Keep-Alive er bij (wel in mijn response)
en mijn content-length is groter.

Ik zal in de pagina de meta tag voor de charset uit zetten, maar ik geloof niet dat het enig effect gaat hebben. Aangezien de server response geeft met Keep-alive aan lijkt dit me ook niet meteen een issue.
Dan als laatste heb ik de mogelijkheid dat de content-length groter is... wat ook niet het probleem mag zijn...

Wellicht gaat er toch iets mis aan de server kant zelf.
Ik heb JSON-RPC geinstalleerd, wellicht dat het daar toch op mis gaat?
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94011

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Met de dataType: "json" krijg ik van jQuery een error response terug.
dus de error: function() wordt dan aangesproken.

Ik kan de charset=UTF-8 niet weg slopen, waarschijnlijk staat dit hard op de server.


Ik bedoelde natuurlijk dat ik libXML geinstalleerd heb.
Ik loop de php.ini nog eens na, maar ik zou dan verwachten dat Debug meldingen zou geven.
Last Edit: 1 year 5 months ago by FrAgFo0d.
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94012

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Als je mijn voorbeeldje in de console plakt terwijl je ingelogd bent op limesurvey moet het lukken, dat is wat ik heb gedaan in chrome
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94015

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
hmmmm vaag hoor.
Bij mij overigens nog steeds niet, ik ben er van overtuigd dat ik nog wat dingen mis hier op de server.

Bij de installatie overigens kreeg ik geen rare meldingen.

Wellicht eens kijken hier naar:

PHP installaties
libapache2-mod-php5 install
liboauth-php install
php-pear install
php-xml-rpc install
php-xml-rpc2 install
php5 install
php5-cli install
php5-common install
php5-gd install
php5-imap install
php5-LDAP install
php5-mysql install
php5-suhosin install
php5-xmlrpc install


XML installaties:
libqt4-xml install
libqt4-xmlpatterns install
libxml++2.6-2 install
libxml2 install
libxml2-dev install
libxml2-utils install
php-xml-rpc install
php-xml-rpc2 install
php5-xmlrpc install
xml-core install

Ik kijk nu even in de php info:
libXML:
libXML support active
libXML Compiled Version 2.7.8
libXML Loaded Version 20708
libXML streams enabled

xmlrpc:
xmlrpc_error_number 0 0
xmlrpc_errors On On

mbstring:
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation disabled

mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml)
mbstring.internal_encoding no value no value
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value


xml:
XML Support active
XML Namespace Support active
libxml2 Version 2.7.8

xmlreader enabled


Zie jij er iets in wat er niet in hoort of anders moet?

Of wat er bij moet ;)
Last Edit: 1 year 5 months ago by FrAgFo0d.
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94022

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Wanneer ik het PHP stuk uit de API documentatie gebruik bijv:
<?php
 
require_once 'php/vendor/jsonRPCClient.php';
 
define( 'LS_BASEURL', 'http://10.0.0.2');  // adjust this one to your actual LimeSurvey URL
define( 'LS_USER', 'admin' );
define( 'LS_PASSWORD', 'test' );
 
// instanciate a new client
$myJSONRPCClient = new jsonRPCClient( LS_BASEURL.'/admin/remotecontrol' );
 
// receive session key
$sessionKey= $myJSONRPCClient->get_session_key( LS_USER, LS_PASSWORD );
echo $sessionKey;
 
// release the session key
$myJSONRPCClient->release_session_key( $sessionKey );
?>
 

Dan krijg ik wel gewoon een session key terug: g4ayj2eqs3uraannnfax8mek9xi5ugv3

Dus het ligt toch aan de jQuery of iets dergelijks.
Ik ga hier thuis nog eens flink verder mee stoeien. Anders zal ik mijn calls altijd naar het PHP script moeten doen en dan moet die alles maar terug geven.
Last Edit: 1 year 5 months ago by FrAgFo0d.
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94041

  • mdekker
  • mdekker's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 341
  • Thank you received: 68
  • Karma: 38
Deze client genereert in ieder geval de juiste headers. Met mijn script lukte het ook, de jquery versie die ik gebruikte is degene die in limesurvey wordt gebruikt daar zou een eventuele afwijking vandaan kunnen komen. Eventueel zou de browser ook nog roet in het eten kunnen gooien doordat die zich met de headers van de call bemoeit.

Aan de server (limesurvey) kan zit het wel goed. Je zal het moeten zoeken in de manier waarop je het JavaScript gebruikt. Als je daar de versie van jquery gebruikt die limesurvey ook gebruikt en dan mijn script gebruikt moet het lukken.

Wat will je eigenlijk gaan doen met de api?
---
Menno Dekker
The administrator has disabled public write access.

Ervaring met API? 1 year 5 months ago #94043

  • FrAgFo0d
  • FrAgFo0d's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 17
  • Karma: 0
Ik gebruik idd jQuery 1.9.1

Maar eigenlijk dat zou niet een probleem mogen opleveren.
Als de headers goed zijn dan zal de api moeten reageren (zou ik zeggen).
Ook als ik de jQuery van Limesurvey zelf gebruik dan krijg ik t niet voor elkaar.

Volgens mij wil ik ook uiteindelijk dingen van de API die nu toch (nog) niet kunnen.
(bijv. de antwoorden van een bep. survey er uit trekken).

Aangezien t nu teveel tijd kost ga ik in PHP alle informatie die ik nodig heb er uit trekken.

iig heel erg bedankt voor je hulp (ik schiet meteen een nieuw topic in over de database ;))
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.267 seconds
Donation Image