2010-04-06 8 views
4

Je dois obtenir les graphiques Google gratuits fonctionnant sur SSL sans aucune erreur de sécurité. J'utilise C# et asp.net.Graphiques Google de SSL

Comme les graphiques Google ne prennent pas en charge le protocole SSL par défaut, je recherche une méthode robuste d'utilisation de ces diagrammes, mais en veillant à ce que mon utilisateur ne reçoive aucun avertissement de sécurité sur son navigateur.

Une idée était d'utiliser un gestionnaire pour appeler les diagrammes api, puis générer la sortie dont mon site a besoin.

Semblable à Pants are optional blog. Je n'ai pas réussi à faire fonctionner cet exemple à ce stade.

Toutes les suggestions ou échantillons sont les bienvenus.

Remerciements

+0

Quel est le problème concret avec le code de ce blog? –

+0

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

Répondre

3

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); 
     } 
    } 
0

J'ai une solution partielle qui a un problème.

est ici le lien vers mon nouveau poste demander de l'aide à un problème spécifique en ce qui concerne ma solution

My Attempt at a SSL handler

10

l'API graphiques Google est maintenant disponible via HTTPS à via https à chart.googleapis.com.

Source: http://www.imperialviolet.org/2010/11/29/charthttps.html

+0

Oui, cela a fonctionné pour moi. Vous pouvez simplement référencer 'https: // chart.googleapis.com/chart' à la place et cela fonctionne. –

Questions connexes