aet*_*rgy 5 php xml api json get
我在做什么:
我正在用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将是:
内容类型:text/xml
获取https://api.example.com/v1.svc/users?apikey=MY-KEY&source=MY-APP
以下是我正在尝试实现的内容:
如何获取用户的LoginKey
获得要登录的用户ID后,您需要向/ users/{user-id}发出GET请求,该请求将返回有关该用户的信息.其中包含一个LoginKey,您可以使用它将用户的浏览器重定向到.
例如.
获取 https://api.example.com/v1.svc/users/USER-ID?apikey=YOUR_API_KEY&source=sampleapp
来自API的回复:
Run Code Online (Sandbox Code Playgroud)<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>,使用传统的 post(不是 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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用 JSON 来执行此操作,您可以使用file_get_contents()从 URL 获取原始 JSON,然后使用json_decode()将其转换为对象。
另外,如果您想通过 AJAX 执行此操作,则必须使用 PHP 回显 URL,而不是尝试重定向,然后让 Javascript 执行重定向window.location.href = '...'