IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Collecttion nommée pour headers HTTP


Sujet :

C++

Vue hybride

smartdev Collecttion nommée pour... 24/09/2007, 17h12
themadmax Ben tu as l'air de maitriser... 25/09/2007, 18h11
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Par défaut Collecttion nommée pour headers HTTP
    Bonjour,

    je voudrais porter ou tout du moins garder la classe .NET utilisée pour gérér les requetes HTTP.
    Dans cett classe j'aimerais creer l'equivalent d'un WebHeaderCollection qui est en fait l'equivalent d'une multimap<string, string> et qui en plus empeche de rentrer les clés suivantes :

    _T("Accept"),
    _T("Connection"),
    _T("Content-Length"),
    _T("Content-Type"),
    _T("Expect"),
    _T("Date"),
    _T("Host"),
    _T("If-Modified-Since"),
    _T("Range"),
    _T("Referer"),
    _T("Transfer-Encoding"),
    _T("User-Agent"),

    J'avais donc commencé a définir la classe suivante (j'ai pris une map dans un premier temp, on verra plus tard pour le multimap):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    class WebHeaderCollection
    {
    private:
    	std::map<tstring, tstring> m_KeyValueMap;
    public:
     
     
    	void Add(tstring sHeader, tstring sValue);
    	int	 GetCount();
    };
     
    void WebHeaderCollection::Add(tstring sHeader, tstring sValue)
    {
    	static const TCHAR* szSysHeaders[] = 
    	{
    		_T("Accept"),
    		_T("Connection"),
    		_T("Content-Length"),
    		_T("Content-Type"),
    		_T("Expect"),
    		_T("Date"),
    		_T("Host"),
    		_T("If-Modified-Since"),
    		_T("Range"),
    		_T("Referer"),
    		_T("Transfer-Encoding"),
    		_T("User-Agent"),
    	};
     
    	// the code below could be commented for maximum performance
    	for (int i = 0; i < _countof( szSysHeaders ); i++)
    	{
    		if (_tcscmp(sHeader.c_str(), szSysHeaders[i]) == 0)
    			return;
    	}
    	//[]
     
     
    	m_KeyValueMap[ sHeader ] = sValue;
    }
     
    int	WebHeaderCollection::GetCount()
    {
    	return m_KeyValueMap.size();
    }
    Mon souci est de pouvoir parcourir cette map.
    Peut etre aurais-je du hériter directment de std::map mais il semble que ce n'est pas recommandé de le faire.
    J'ai besoin de vos avis...

  2. #2
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Ben tu as l'air de maitriser les stl, mais si tu veux juste parcourir ta map
    Tu as plusieurs solutions:
    sous VisualStudio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <string>
    #include <map>
    #include <iostream>
     
    int main()
    {
    	std::map<std::string,std::string> _map;
    	_map["key1"] = "value1";
    	_map["key2"] = "value2";
    	for each( std::pair<std::string,std::string> p in _map )
    	{
    		std::cout << p.first << " => " << p.second << std::endl;
    	}
    	return 0;
    }
    ou avec un iterateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	std::map<std::string,std::string> _map;
    	std::map<std::string,std::string>::iterator it;
    	_map["key1"] = "value1";
    	_map["key2"] = "value2";
     
    	for ( it = _map.begin(); it != _map.end(); it++ )
    	{
    		std::cout << (*it).first << " => " << (*it).second << std::endl;
    	}

Discussions similaires

  1. [MVC] Headers HTTP pour la gestion du cache en Spring MVC 3.0.2
    Par tdeco dans le forum Spring Web
    Réponses: 0
    Dernier message: 16/08/2011, 17h27
  2. [Axis] Headers HTTP
    Par getupa dans le forum Services Web
    Réponses: 4
    Dernier message: 28/06/2010, 14h41
  3. Création certificat pour accès https
    Par Florent08800 dans le forum Apache
    Réponses: 3
    Dernier message: 26/01/2007, 15h54
  4. Comment passer des headers http ?
    Par Loko dans le forum Oracle
    Réponses: 5
    Dernier message: 15/11/2006, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo