通过使用PHP中的参数调用URL来获取JSON对象

前端之家收集整理的这篇文章主要介绍了通过使用PHP中的参数调用URL来获取JSON对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过调用moodle url来获取json数据:
  1. https://<moodledomain>/login/token.PHP?username=test1&password=Test1&service=moodle_mobile_app

moodle系统的响应格式如下:

  1. {"token":"a2063623aa3244a19101e28644ad3004"}

我试图用PHP处理的结果:

  1. if ( isset($_POST['username']) && isset($_POST['password']) ){
  2.  
  3. // test1 Test1
  4.  
  5. // request for a 'token' via moodle url
  6. $json_url = "https://<moodledomain>/login/token.PHP?username=".$_POST['username']."&password=".$_POST['password']."&service=moodle_mobile_app";
  7.  
  8. $obj = json_decode($json_url);
  9. print $obj->{'token'}; // should print the value of 'token'
  10.  
  11. } else {
  12. echo "Username or Password was wrong,please try again!";
  13. }

结果是:未定义

现在的问题是:
如何处理moodle系统的json响应格式?任何想法都会很棒.

[UPDATE]:
我通过curl使用了另一种方法,并在PHP.ini中更改了以下行:* extension = PHP_openssl.dll *,* allow_url_include = On *,但现在出现错误:注意:尝试获取非对象的属性.这是更新的代码

  1. function curl($url){
  2. $ch = curl_init();
  3. curl_setopt($ch,CURLOPT_URL,$url);
  4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  5. $data = curl_exec($ch);
  6. curl_close($ch);
  7. return $data;
  8. }
  9.  
  10. $moodle = "https://<moodledomain>/moodle/login/token.PHP?username=".$_POST['username']."&password=".$_POST['password']."&service=moodle_mobile_app";
  11. $result = curl($moodle);
  12.  
  13. echo $result->{"token"}; // print the value of 'token'

任何人都可以建议我吗?

json_decode()需要一个字符串,而不是一个URL.您正在尝试解码该url(并且json_decode()不会执行http请求来为您获取url的内容).

你必须自己获取json数据:

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

猜你在找的PHP相关文章