如何使用 cURL 调用返回数据


How to return data using cURL call

这返回一个标记,例如: {"token":"260e5b8adf74af6be5dfa250c5ad93c8"}

我只想看内容部分:260e...我想我可以通过使用$getInfo['令牌']来获得它,对吧?

$user="admin";
$password="Moodle15!";
$services="moodle_mobile_app";
$url = "https://localhost/moodle/login/token.php?username=".$user."&password=".$password."&service=".$services."";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURL_RETURNTRANSFER, true);
$getURL = curl_exec($ch);
$getInfo = json_decode($getURL, true);
$displayToken = $getInfo['token'];
echo $displayToken;
curl_close($ch);

我不知道CURL_RETURNTRANSFER

是怎么回事。

和错误:

Notice: Use of undefined constant CURL_RETURNTRANSFER - assumed 'CURL_RETURNTRANSFER' in C:'xampp'htdocs'moodle'cURL_script.php on line 12
Warning: curl_setopt() expects parameter 2 to be long, string given in C:'xampp'htdocs'moodle'cURL_script.php on line 12
{"token":"260e5b8adf74af6be5dfa250c5ad93c8"}

编辑:

如果我有:

{"id":4,"username":"Jhon","firstname":"smith","lastname":"Reches","fullname":"Jhon smith","email":"Jhon.smith@example.com","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/25'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/25'/user'/icon'/f1","groups":[],"roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"},{"id":2,"fullname":"Grup de Recerca","shortname":"Grp. Recerca"}]}

我怎样才能访问"用户名"?或"全名",当你知道里面有很多"全名"时?

EDITED2:

我现在有的新代码:

$token = "260e5b8adf74af6be5dfa250c5ad93c8";
$funcion="core_enrol_get_enrolled_users";
$courseid="3";
$format="json";
$url= "https://localhost/moodle/webservice/rest/server.php?wstoken=".$token."&wsfunction=".$funcion."&courseid=".$courseid."&moodlewsrestformat=".$format."";   
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$getURL = curl_exec($ch);
$getInfo = json_decode($getURL, true);
$email = $getInfo[2]['email'];
echo $email."</br>";
curl_close($ch);

现在$email包含 jhon.smith@example.com 但我有很多结果,我怎样才能用foreach显示所有这些结果?因为它是一个多维阵列。见下文。

[{"id":4,"username":"jhon1.smith1","firstname":"Jhon1","lastname":"Smith1","fullname":"jhon1 smith1","email":"jhon1.smith1@example.cat","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/25'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/25'/user'/icon'/f1","groups":[],"roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"},{"id":2,"fullname":"Grup de Recerca","shortname":"Grp. Recerca"}]},{"id":5,"username":"jhon1.smith1","firstname":"Josep","lastname":"jhon1 ","fullname":"jhon1 smith1","email":"jhon1.smith1@example.cat","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/26'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/26'/user'/icon'/f1","groups":[],"roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"},{"id":2,"fullname":"Grup de Recerca","shortname":"Grp. Recerca"}]},{"id":6,"username":"jhon1.smith1","firstname":"jhon1","lastname":"smith1","fullname":"jhon1 smith1","email":"jhon1.smith1@example.cat","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/32'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/32'/user'/icon'/f1","groups":[],"roles":[{"roleid":1,"name":"","shortname":"manager","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"},{"id":2,"fullname":"Grup de Recerca","shortname":"Grp. Recerca"}]},{"id":7,"username":"jhon1.jhon1","firstname":"jhon1","lastname":"jhon1","fullname":"jhon1 smith1","email":"jhon1.smith1@example.cat","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/35'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/35'/user'/icon'/f1","groups":[],"roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"}]},{"id":8,"username":"jhon1.smith1","firstname":"jhon","lastname":"smith1","fullname":"jhon1 smith1","email":"jhon1.smith1@example.cat","department":"","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"profileimageurlsmall":"http:'/'/localhost'/moodle'/pluginfile.php'/41'/user'/icon'/f2","profileimageurl":"http:'/'/localhost'/moodle'/pluginfile.php'/41'/user'/icon'/f1","groups":[],"roles":[{"roleid":3,"name":"","shortname":"editingteacher","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Game Design","shortname":"Game Design"}]}]

我希望:

foo@example.com
bar@example.com
foo2@..

CURL_RETURNTRANSFER需要更改为CURLOPT_RETURNTRANSFER

这会影响curl_exec()返回的内容,因此您不会$getURL获取 JSON 字符串。

更正常量后,其余代码是正确的。

编辑(已添加):

在处理 JSON 时,格式化它有助于使其更易于阅读,我使用 jsonlint.com .

然后查看结构,如果您有:

$data = json_decode($response, true);

enrolledcourses访问全名将是:

echo $data['enrolledcourses'][0]['fullname'];

或者,如果您使用的是对象表示法,而不是关联数组:

echo $data->enrolledcourses[0]->fullname;