2012-07-17 107 views
3

我需要使用PHP下載一個xml文件。我可以通過設置下列選項來讀取文件的內容,當對它進行卷曲調用時。如何使用php通過https下載文件

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($http,CURLOPT_USERAGENT,'XYZ'); 

從上面的代碼中,我需要做VERIFYHOST爲假,還需要打電話時,設置明確的USERAGENT讀取文件,因爲文件是不能公開訪問,只有特定的應用程序可以撥打電話可以明顯看出讀它(網絡安全技術和東西)

但是我怎麼下載同一個文件,我已經試過readfilefopen/fpassthrufile_get_contents但似乎沒有奏效。 READFILE給出了錯誤failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

是否有提供捲曲像fopenreadfile選項的方式,我認爲這可能是解決這個問題的最簡單的方法。我在PHP文檔中找不到任何幫助。

請幫忙。

+0

你提供有關 「您」 頁眉和東西? – 2012-07-17 19:35:12

+0

@DavidBélanger就像通常的「Content-disposition」和「Content-type」標題。 – Harshdeep 2012-07-17 19:37:42

+0

您需要發送關於您的標題:UserAgent和IP地址。 – 2012-07-17 19:38:37

回答

3

您需要將您的特殊用戶代理附加到流上下文。

http://www.php.net/manual/en/wrappers.http.php

允許只讀經由HTTP 1.0到文件/資源​​的訪問,使用HTTP GET方法。主機:頭與請求一起發送以處理基於名稱的虛擬主機。 如果您已配置user_agent string using your php.ini file或流上下文,它也將包含在請求中。

例2從上面的鏈接:

<?php 
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo"); 

$fp = fopen('http://www.example.com/index.php', 'r'); 
?> 
+0

感謝'ini_set'做到了訣竅。 – Harshdeep 2012-07-17 20:22:38