2011-11-18 91 views
2

我需要從谷歌圖表中獲取圖像,但我在代理之後。使用cURL通過代理獲取谷歌圖表圖像

與下面的代碼(改變$網址),我可以從其他網站從谷歌獲得的圖像,而不是:

$url = 'http://chart.apis.google.com/chart?chs=450x270&chd=t:'.$values_list.'&cht=p&chl='.$labels_list.'&chco=80AF1B,FFFF8C&chf=bg,s,F8F8F8';

$img = '../uploads/tx_oriindicadores/triglo.png'; 

file_put_contents($img, t3lib_div::getURL($url)); 

使用getURL的代碼()方法使用捲曲功能的連接和檢索數據。

此時我只收到一個空文件。

是否有一些參數或配置,我關心爲了從谷歌獲取圖像?

謝謝。


使用getURL()方法是本地TYPO3的,你可以看到在這個頁面的代碼: http://doc-typo3.ameos.com/4.1.0/class_8t3lib__div_8php-source.html線2342

我通過該網站的後端傳遞參數。

+0

請顯示所有捲髮參數 –

+0

@AurimasL我更新了問題並提供了更多信息。 – Memochipan

+0

您可以立即在getURL()中的第一個if()分支之前var_dump()$ GLOBALS ['TYPO3_CONF_VARS'] ['SYS'] ['curlUse']的值並將結果粘貼到此處(省略任何密碼和其他敏感信息)。 – elazar

回答

0

上面的功能是正確的,問題是在變量$labels_list有空格。所以用%20替換空格解決了這個問題。

直接URL請求中的空格不是問題,但在cURL中有空格。

因此,一般來說,使用cURL時不要使用空格,而應使用%20

0

getURL函數似乎可以抑制錯誤。刪除錯誤抑制(@)並且可能會出現警告或兩個警告。

+0

謝謝,但雖然我這樣做,沒有任何警告。 – Memochipan

+0

您是否相應地設置了PHP錯誤級別? – Halcyon

+0

是的,但只能看到與我的代碼無關的Notice和Strict Standards消息。 – Memochipan

1

嘗試var_dump() - 函數的結果。如果它是FALSE,那麼你可以通過在curl_close($ ch)之前添加一個 echo curl_error($ch);來找出問題;在getUrl()函數中併發布錯誤消息。

+0

同意。你也可以嘗試添加'curl_setopt($ ch,CURLOPT_VERBOSE,1);'。 – elazar

+0

謝謝。我得到了bool(false)和'echo curl_error($ ch);'帶來了消息**請求的URL返回錯誤:400 ** – Memochipan

+0

使用下面的代碼我可以使用方法的錯誤檢查而不用觸及核心代碼:'$ report = array(); \t \t \t \t \t \t file_put_contents($ img,t3lib_div :: getURL($ url,0,FALSE,$ report)); \t \t \t \t \t \t回波$報告[ '消息'];' – Memochipan

1

嘗試使用網址與例如wget --save-headers來查看結果是什麼。

然後更改網址/代理/ cookie設置,直到它得到它的工作。

然後回到PHP。

+0

使用wget --save-headers我獲得了錯誤400錯誤請求。我以前從未使用過標題,你能建議我測試哪個標題嗎? – Memochipan

+0

您可以使用以下網址:http://chart.apis.google.com/chart?chs=450x270&chd=t:25,25,50&cht=p&chl=A|B|C&chco=80AF1B,FFFF8C&chf=bg,s, F8F8F8' – Memochipan

+0

它與wget一起使用帶引號的URL:'wget「http://chart.apis.google.com/chart?chs=450x270&chd=t:25,25,50&cht=p&chl=A|B|C&c HCO = 80AF1B,FFFF8C&CHF = BG,S,F8F8F8" '。現在我將用cURL進行測試。 – Memochipan