Пример Google Chart Tool не работает - PullRequest
2 голосов
/ 17 июня 2010

Я использую пример пост-запроса php, указанный на http://code.google.com/apis/chart/docs/post_requests.html для создания диаграммы.

Код: chartserver-image.php

<?php
 // Create some random text-encoded data for a line chart.
 header('content-type: image/png');
 $url = 'http://chart.apis.google.com/chart';
 $chd = 't:';
 for ($i = 0; $i < 150; ++$i) {
 $data = rand(0, 100000);
 $chd .= $data . ',';
 }
 $chd = substr($chd, 0, -1);

// Add data, chart type, chart size, and scale to params.
$chart = array(
'cht' => 'lc',
'chs' => '600x200',
'chds' => '0,100000',
'chd' => $chd);

// Send the request, and print out the returned bytes.
$context = stream_context_create(
array('http' => array(
  'method' => 'POST',
  'content' => http_build_query($chart))));
fpassthru(fopen($url, 'r', false, $context));
?>

another_page.html

<img width='600' height='200' src='chartserver-image.php'>

Прямо сейчас, когда я получаю доступ к another_page.html, изображение не загружается, когда я нажимаю на изображение, которое оно показывает

Изображение «http://localhost/demo/chartserver-image.php” не может быть отображено,потому что он содержит ошибки.

В чем проблема, которую я не могу понять?

Пожалуйста, помогите мне в этом

Спасибо

Ответы [ 4 ]

2 голосов
/ 18 июня 2010

Замена 'content' => http_build_query ($ chart))));with 'content' => http_build_query ($ chart, '', '&'))));устраняет проблему.

Я добавил разделитель аргументов '&' в http_build_query (), что позволяет избежать ошибки, если параметр arg_separator.output изменен в php.ini.

Когда я проверял phpinfo, аргумент arg_separator.output был &.Это вызывало проблему, поэтому добавление '&' к http_build_query () решает проблему.

1 голос
/ 28 июля 2011

Это будет работать Абсолютно хорошо ... Я думаю, что некоторые ошибки в приведенном выше примере исправлены ниже.

<?php

 // Create some random text-encoded data for a line chart.
 header('content-type: image/png');
 $url = 'http://chart.apis.google.com/chart';
 $chd = 't:';
 for ($i = 0; $i < 150; ++$i) {
 $data = rand(0, 100000);
 $chd .= $data . ',';
 }
 $chd = substr($chd, 0, -1);

// Add data, chart type, chart size, and scale to params.
$chart = array(
'cht' => 'lc',
'chs' => '600x200',
'chds' => '0,100000',
'chd' => $chd);

$query = http_build_query($chart);

$fullurl = $url."?".$query;

$context = stream_context_create(

    array(
            'http' => array(
                    'method' => 'GET',
                    'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
                                "Content-length: 0",

            )
    )
);

$ret = fopen($fullurl, 'r', false, $context);
fpassthru($ret);
?>
0 голосов
/ 10 сентября 2010

У меня была идентичная проблема, и я разделил

$context = stream_context_create(
array('http' => array(
  'method' => 'POST',
  'content' => http_build_query($chart))));

на два утверждения:

$x = array('http' => array(
  'method' => 'POST',
  'content' => http_build_query($chart)));

$context = stream_context_create($x);

и это, похоже, решило проблему (пожалуйста, не спрашивайте меня, почему)

0 голосов
/ 17 июня 2010

Это работает для меня:

<?php

 // Create some random text-encoded data for a line chart.
 //header('content-type: image/png');
 $url = 'http://chart.apis.google.com/chart';
 $chd = 't:';
 for ($i = 0; $i < 150; ++$i) {
 $data = rand(0, 100000);
 $chd .= $data . ',';
 }
 $chd = substr($chd, 0, -1);

// Add data, chart type, chart size, and scale to params.
$chart = array(
'cht' => 'lc',
'chs' => '600x200',
'chds' => '0,100000',
'chd' => $chd);

$query = http_build_query($chart);

$fullurl = $url."?".$query;

$context = stream_context_create(

    array(
            'http' => array(
                    'method' => 'GET',
                    'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
                                "Content-length: 0",
                    'proxy' => 'tcp://X.X.X.X:XXXX'
            )
    )
);

$ret = fopen(fullurl, 'r', false, $context);
fpassthru($ret);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...