2013-01-10 9 views
7

Próbuję uzyskać dane json wywołując moodle URL:Pierwsze JSON obiektu poprzez wywołanie adresu URL z parametrami w PHP

https://<moodledomain>/login/token.php?username=test1&password=Test1&service=moodle_mobile_app 

format odpowiedź systemu Moodle jest tak:

{"token":"a2063623aa3244a19101e28644ad3004"} 

wynik próbowałem przetwarzać z PHP:

if (isset($_POST['username']) && isset($_POST['password'])){ 

       // test1      Test1 

    // request for a 'token' via moodle url 
    $json_url = "https://<moodledomain>/login/token.php?username=".$_POST['username']."&password=".$_POST['password']."&service=moodle_mobile_app"; 

    $obj = json_decode($json_url); 
    print $obj->{'token'};   // should print the value of 'token' 

} else { 
    echo "Username or Password was wrong, please try again!"; 
} 

wynik ja s: niezdefiniowany

Teraz pytanie: Jak można przetworzyć odpowiedzi json Format systemu Moodle? Każdy pomysł będzie świetny.

[UPDATE]: Użyłem innego podejścia poprzez curl i zmienione w php.ini następujących linii: extension = php_openssl.dll * * * allow_url_include = WŁ *, ale teraz istnieje błąd: Uwaga: Próba uzyskania właściwości obiektu. Oto zaktualizowany kod:

function curl($url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$moodle = "https://<moodledomain>/moodle/login/token.php?username=".$_POST['username']."&password=".$_POST['password']."&service=moodle_mobile_app"; 
$result = curl($moodle); 

echo $result->{"token"}; // print the value of 'token' 

Czy ktoś może mi doradzić?

Odpowiedz

30

json_decode() oczekuje ciągu, a nie adresu URL. Próbujesz zdekodować ten adres URL (i json_decode() będzie NOT zrobić żądanie http, aby pobrać zawartość adresu URL dla Ciebie).

Trzeba pobrać dane JSON siebie:

$json = file_get_contents('http://...'); // this WILL do an http request for you 
$data = json_decode($json); 
echo $data->{'token'}; 
+0

dziękuję za odpowiedź, Zmieniłem je ** file_get_contents ('https: // ...') ** ... , ale wciąż ten sam wynik ** undefined ** Moja wersja PHP 5.4.7 – Dozent

+0

następnie echo out wyniki file_get_contents, aby zobaczyć, co otrzymasz. czy to naprawdę json? może masz włączone magic_quotes, a PHP jest "pomocny" jako szarpnięcie i zniekształcanie sznurka na tobie. Być może ten URL nie generuje w ogóle jsona. –

+0

Podążyłem za tym linkiem: http://docs.moodle.org/dev/Creating_a_web_service_client#How_to_get_a_user_token to nie jest json resnponse? – Dozent

Powiązane problemy