如何从 PHP 中获取远程 JSON 或 XML API 数据,并将返回对象分配为 PHP 变量


How to GET remote JSON or XML API data from within PHP and assign a return object as PHP variable?

我在做什么:

我正在用PHP编写一个自定义程序,该程序通过API从在线LMS服务中提取数据。现在,我正在尝试实现可用的单点登录功能。

程序的这一部分需要在单击按钮时(通过js或php POST或?(对API执行GET请求,并最终将用户浏览器重定向到API响应中提供的URL。

API 允许选择 XML 或 JSON 响应,我更喜欢使用 JSON,但如果需要,我会使用 XML。

从有关发出请求的 API 文档中:

本文档中列出的所有请求都应包含内容类型 (XML 或 JSON(并带有以下前缀 基 Uri:https://api.example.com/v1.svc

例如,以XML格式获取用户列表的Uri将是:

内容类型:文本/XML

获取 https://api.example.com/v1.svc/users?apikey=MY-KEY&source=MY-APP

以下是我正在尝试实现的内容:

如何获取用户的登录密钥

获得要登录的用户 ID 后,您需要创建一个 对/users/{user-id} 的 GET 请求,它将返回有关 用户。其中包括一个登录密钥,您可以使用它来重定向 用户的浏览器。

例如。

获取 https://api.example.com/v1.svc/users/USER-ID?apikey=YOUR_API_KEY&source=sampleapp

来自 API 的响应:

<User>
  <Id>abc12345678</Id>
  <UserName>rich_demo@example.com</UserName>
  <FirstName>Rich</FirstName>
  <LastName>Chetwynd</LastName>
  .....
  <LoginKey>https://demo.example.com/login.aspx?loginkey=xxxzzzyyy777222</LoginKey>
</User>

<LoginKey>对象数据是我需要最终将用户的浏览器重定向到的URL。

我是使用 API 的新手,并且尝试了大量在发布之前无法开始工作的方法。如果您知道如何实现这一目标,如果您分享您的知识,我将不胜感激。

谢谢。

> 从 HTML <form> 中,使用传统的帖子(不是 AJAX(到执行此操作的 PHP 脚本:

if(isset($_POST['userid']))
{
    $userId = (int)$_POST['userid'];
    $obj = simplexml_load_file('https://api.xxx.com/v1.svc/users/' . $userId . '?apikey=YOUR_API_KEY&source=sampleapp');
    if($obj && isset($obj->LoginKey))
    {
        $loginKey = $obj->LoginKey;
        header('Location: ' . $loginKey);
    }
    else
    {
        // failed to load the xml
    }
}

如果要使用 JSON 执行此操作,可以使用file_get_contents()从 URL 获取原始 JSON,然后使用 json_decode() 将其转换为对象。

此外,如果你想通过AJAX来做到这一点,你必须用PHP回显URL而不是尝试重定向,然后让Javascript使用window.location.href = '...'