2010-12-03 25 views
0

Je tente de tracer un graphique d'environ 7000 caractères avec l'API Google Maps, mais l'URL n'acceptera que 2 000 caractères. Cependant, j'ai lu qu'une demande POST peut prendre en charge jusqu'à 16 Ko de caractères, alors j'essaie d'utiliser cela pour rendre le graphique. Il y a un exemple PHP de comment rendre le graphe et ensuite utiliser ce fichier php comme imr src, mais comment transmettre ma dataload à cette autre page?Graphique de l'API Google Charts Request Too Large

Si je le mets comme un paramètre GET dans le imr src lui-même, il y aura trop de caractères à nouveau. J'ai lu que vous ne devriez jamais faire un URL plus grand que 2000 caractères si vous pouvez l'aider,

Peut-être que je pourrais le produire dans un dossier et puis le fichier img php l'a-t-il tiré dedans chaque fois qu'il est demandé?

Si quelqu'un a des suggestions, ce serait une grande aide,

Merci!

J'ai lu que la limite de caractères de l'URL dépend du navigateur, IE est d'environ 2000, cela signifie-t-il qu'un imr src avec un plus grand nombre de caractères ne sera pas rendu correctement dans ce navigateur? Alternativement FF a une limite beaucoup plus grande, le site Web suivant en dit plus de 100 000 donc le rendrait-il en FF?

http://www.boutell.com/newfaq/misc/urllength.html

Répondre

0

Je viens acquérir de nouveau le Dataload avec une demande séparée, puis utilisé le fichier php comme source d'image.

0

Utilisez curl pour convertir la requête 'GET' à mon script proxy en une requête 'POST' pour google. Ensuite, vous pouvez simplement substituer votre URL proxy pour les googles dans votre application.

function getChartProxy() 
{ 
    if(isset($_GET) && count($_GET)){ 
     ob_clean();//remove any header or error messages from the output buffer 
     //example for testing 
     // $url = "http://chart.apis.google.com/chart?cht=p&chs=250x100&chd=t:40,30,20&chl=Hispanic|NonHispanic|Incomplete"; 

     $getData = http_build_query($_GET); 
     $url = 'http://chart.apis.google.com/chart';   
     $ch = curl_init(); 

     curl_setopt ($ch, CURLOPT_URL, $url); 
     curl_setopt ($ch, CURLOPT_HEADER, 0); 

     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS,$getData); 
     ob_start(); 

     curl_exec ($ch); 
     curl_close ($ch); 
     $bytes = ob_get_contents(); 

     ob_end_clean();  
     header('Content-type: image/png'); 
     echo $bytes; 
    } 
} 

Cette chose est un proxy donc elle a besoin d'une sorte de contrôle d'accès pour être utilisée en production.