Nous le faisons automatiquement dans la plate-forme NetQuarry - il est assez simple, même si vous ne force l'image pour passer par votre site par rapport à charts.google.com, en faisant votre navigateur exécuter la demande via une seule connexion. Comme un graphique est juste un lien vers une image, ce que nous faisons est de construire le lien vers le graphique (un processus beaucoup plus complexe, évidemment), puis ajouter le lien entier à la chaîne de requête sur un gestionnaire interne (handler.ashx? req = graphique &). Ainsi, le nouveau lien ressemble à ceci:
handler.ashx act = chrt & req = tableau & cht = p3 & chs = 450x170 & chd = s: HAR9GBA & chl = Nouveau | En% 20Progress | Répondu | Won »? t% 20Respond | Sur% 20Hold | Futur | Révision | & CHG = 20,20,1,5 & CHG = 10,25,1,5 & CHCO = 0A477D
Ensuite, nous suffit de télécharger les données d'image et de l'écrire de nouveau comme la réponse.
Voici le code:
Blockquote
private void GoogleChart(HttpContext cxt)
{
const string csPrefix = "?act=chrt&req=chart&";
HttpRequest req = cxt.Request;
HttpResponse rsp = cxt.Response;
string sUrl = cxt.Request.RawUrl;
int nStart = sUrl.IndexOf(csPrefix, StringComparison.OrdinalIgnoreCase);
rsp.Clear();
if (nStart > 0)
{
sUrl = "http://chart.apis.google.com/chart?" + sUrl.Substring(nStart + csPrefix.Length);
System.Net.WebClient wc = new System.Net.WebClient();
byte[] buffer = wc.DownloadData(sUrl);
cxt.Response.ClearContent();
cxt.Response.ClearHeaders();
cxt.Response.ContentType = "application/octet-stream";
cxt.Response.AppendHeader("content-length", buffer.Length.ToString());
cxt.Response.BinaryWrite(buffer);
}
}
Quel est le problème concret avec le code de ce blog? –
Actuellement, rien ne semble rendre même après que mon gestionnaire a été appelé et qu'aucune erreur n'a été lancée. Je posterai ici mon implémentation du code ici. merci – SetiSeeker