我正在嘗試實施一種驗證對美聯社訂閱源的請求的PHP方法。從他們的文檔:對AP WebFeed請求進行身份驗證
要認證所有的飼料和內容請求,AP WebFeeds系統使用HTTP基本認證,這是當前標準的聯合供稿。大多數提要閱讀器和閱讀器組件允許提前配置用戶憑據,並將它們傳遞到標題中而不是URL中。
重要:直接在URL中傳遞憑據目前被廣泛阻止。有關詳細信息,請參閱位於http://www.microsoft.com/technet/security/bulletin/MS04-004.mspx的Microsoft安全公告。
可以配置一個讀取器或組件來創建與以下列格式中的名稱/值的認證頭:
("Authorization", "Basic " + {Encoded_username_and_password})
其中
{Encoded_username_and_password}
替換爲字節串「,在Base64編碼用戶名密碼。」如果您正在編寫自己的客戶端代碼以下載訂閱源,請使用內置於編程語言庫中的HTTP基本認證。 HTTP基本認證在大多數平臺上都可用;例如Perl,PHP,C或Java。
我的嘗試是:
/**
* Begin Transaction
*/
$url = "http://syndication.ap.org/AP.Distro.Feed/GetFeed.aspx?idList=" . implode(',', $idList) . "&idListType=products&maxItems=25";
$auth = "Authorization=Basic " . base64_encode($user . ":" . $pass);
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, $auth); // add POST fields
$result = curl_exec($ch); // run the whole process
curl_close($ch);
/**
* End Transaction
*/
var_dump($result);
這給了我:
string(405) "
Authentication
FeedServer
Authentication Failed on GetFeed
Authentication denied no auth credentials detected
"
什麼是驗證在PHP這個請求的正確方法是什麼?
(See also the provided ASP.NET and Java examples)