2012-05-08 44 views
5

我在做什麼:如何從PHP中獲取遠程JSON或XML API數據並將返回對象指定爲PHP變量?

我正在寫在PHP中的自定義程序,其通過API從在線服務LMS提取數據。現在,我試圖實現可用的單點登錄功能。

當點擊按鈕(通過js或php POST或?)並且最終將用戶瀏覽器重定向到來自API響應中提供的URL時,該程序的這部分需要對API執行GET請求。

該API允許選擇XML或JSON響應,我傾向於使用JSON,但如果需要的話,將使用XML。

從API文檔上發出請求:本文檔中列出應包含在請求報頭中的內容類型 (XML或JSON)並用以下 基前綴

所有請求Uri:https://api.example.com/v1.svc

Eg開放的我們要獲得XML格式的用戶名單將是:

內容類型:文本/ XML

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

下面就是我想要實現:

如何獲得用戶的LoginKey

一旦你的用戶ID使y ou想要登錄您需要向/ users/{user-id}發出一個 GET請求,該請求將返回有關 用戶的信息。包括在這裏是一個登錄密鑰,你可以用它來重定向 用戶的瀏覽器。

例如。

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

響應:

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

<LoginKey>對象的數據是,我需要最終重定向用戶的瀏覽器的URL。

我是新來的API工作,並嘗試了很多方法,我發佈之前無法工作。如果你知道如何做到這一點,如果你分享你的知識,我將非常感激。

謝謝。

回答

2

從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()得到從原始JSON一個URL,然後用json_decode()將它變成一個對象。

另外,如果你想通過AJAX來做到這一點,你將不得不使用PHP,而不是試圖重定向到呼應URL,然後了Javascript執行重定向與window.location.href = '...'

+0

謝謝!該按鈕不是表單提交按鈕,因此我可以更改以獲取並獲取上面的代碼之前的獲取數據? – aethergy

+0

當然,如果用戶ID來自查詢字符串,那麼使用'$ _GET ['userid']'而不是'$ _POST ['userid']''。 – MrCode

+0

工作完美!再次感謝你的幫助。 – aethergy