2011-11-18 45 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