2014-11-24 50 views
0

Vimeo.com允許將視頻嵌入限制到特定的域。但是,在嵌入視頻時,我有一個腳本可以查詢Vimeo獲取視頻的詳細信息。這個請求是通過PHP的simplexml_load_file()函數完成的,目標URL是Vimeo視頻URL。由於引薦者字段爲空白,但Vimeo不允許訪問視頻,腳本無法獲取任何視頻詳情。PHP - 使用simplexml_load_file從URL加載XML文件時設置引用鏈接的方式嗎?

不幸的是,Vimeo不允許白名單IP地址,唯一的解決辦法是設置一個引用來使它看起來像來自瀏覽器的請求試圖觀看我的網站上的視頻。

我需要知道如何設置引用鏈接 - 我沒有看到任何方式 - 希望有一些我錯過了。

的具體線路是:

$sxml = simplexml_load_file($target_url); 

回答

0

當然可以。通過在所謂的流上下文中爲該函數設置標頭字段,您可以設置所有標頭,包括引用者simplexml_load_file

這是通過libxml_set_streams_context完成的。

代碼示例(該服飾與配飾不起作用,它只是表明,加載XML工作以及如何設置頭):

$options = [ 
    "http" => [ 
     "header"  => "Accept-language: en\r\n" . 
          "Referer: http://www.example.com\r\n", 
     "ignore_errors" => true, 
    ] 
]; 
$context = stream_context_create($options); 
libxml_set_streams_context($context); 

$url = "http://vimeo.com/_pingback"; 

$sxl = simplexml_load_file($url); 
$sxl->asXML("php://output"); 

相關型號的問題:

  • simplexml_load_file problems - 一個答案了,展示瞭如何與file_get_contents一起使用流上下文,然後將HTTP響應主體傳遞給simplexml_load_string
0

您可以使用捲曲:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $target_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com/1'); 
$xml = curl_exec($ch); 

$sxml = simplexml_load_string($xml); 
+0

我很欣賞這一點,但我不能依靠cURL總是可用。出於這個原因,我將接受其他答案。謝謝。 – 2014-11-24 20:42:26

0

我知道你的問題是關於設置引用者的具體內容,但是你的原創想法存在一些問題。

Vimeo不支持您訪問視頻元數據的方式,並且在將來不會發出任何高級警告。

Vimeo API是檢索視頻元數據的唯一支持方式。

+0

感謝您指出,不幸的是,我正在使用的代碼包已經舊且不受支持。我們只能希望它足夠長久。 – 2014-11-28 11:01:43