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

XML Discussion :

[SOAP] Injection du contenu d'un fichier XML dans un serveur SOAP


Sujet :

XML

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 85
    Points : 113
    Points
    113
    Par défaut [SOAP] Injection du contenu d'un fichier XML dans un serveur SOAP
    Bonjour,

    J'explique mon problème : un flux SOAP est émis à travers un réseau d'entreprise. Pour se prémunir d'une panne de ce réseau ou de l'un des équipements par lequel passe le flux, une solution de repli a été choisie.
    Elle consiste à envoyer, par mail, un fichier XML contenant le flux SOAP tel quel (avec les balises SOAP:ENV, ...) et de le réinjecter directement dans le serveur SOAP de la machine destinatrice du flux.

    Je pensais donc développer un client SOAP, qui aurait ce fichier en entrée et qui l'enverrait au serveur SOAP, tout ça en local.

    Pour réaliser cette injection, je pensais utiliser la libCURL mais je ne trouve pas d'exemple concret.
    Il faut certainement rajouter les paramètres HTTP, non? Est-ce que quelqu'un aurait un exemple?

    Si quelqu'un connaît un autre moyen je suis aussi preneur!

    Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 85
    Points : 113
    Points
    113
    Par défaut
    Bon ben comme je suis le premier à me trouver une réponse, je me réponds.
    Comme mon fichier est déjà correctement formé, il suffit de faire un simple POST HTTP avec le code suivant :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #include <curl/curl.h>
    #include <stdio.h>
    #include <fstream>
    #include <iostream>
    #include <sstream>
     
    char* szFileContent(char* szFilePath)
    {
    	std::ifstream ifsFile(szFilePath);
    	std::stringstream ssBuffer;
     
    	if (ifsFile)
    	{
    		ssBuffer<< ifsFile.rdbuf();
    		ifsFile.close();
    		return buffer.str();
    	}
    }
     
    int iLaunchFlow(char* szURL, char* szUser, char* szPassword, char* szFilePath)
    {
    	// Initialisation de CURL
    	CURL* cCurl = curl_easy_init();
    	if(!cCurl) return -1;
     
    	// Ajout des paramètres HTTP
    	curl_easy_setopt(cCurl, CURLOPT_URL, szURL);					
    	char szUserpassword;
    	sprintf(szUserpassword, "%s:%s", szUser, szPassword);
    	curl_easy_setopt(cCurl, CURLOPT_USERPWD, szUserpassword);		
     
    	// Copie du contenu du fichier dans le contenu du POST
    	char* szBuffer = szFileContent(szFilePath);
    	curl_easy_setopt(cCurl, CURLOPT_POST, 1);					
    	curl_easy_setopt(cCurl, CURLOPT_POSTFIELDS, szBuffer);				
    	curl_easy_setopt(cCurl, CURLOPT_POSTFIELDSIZE, strlen (szBuffer));	
     
    	// Ne pas vérifier le certificat ni le hostname
    	curl_easy_setopt(cCurl, CURLOPT_SSL_VERIFYPEER, 0);				
    	curl_easy_setopt(cCurl, CURLOPT_SSL_VERIFYHOST, 0);				
     
    	// POST HTTP proprement dit
    	CURLcode cRetVal = curl_easy_perform(cCurl);
     
    	// Récupération du code retour HTTP
    	int iRetCode;
    	curl_easy_getinfo (cCurl, CURLINFO_HTTP_CODE, &iRetCode);		
     
    	// Nettoyage
    	curl_easy_cleanup(cCurl);
    	delete szBuffer;
     
    	return iRetCode;
    }
     
    int main(void)
    {
    	return iLaunchFlow("http://www.developpez.com:1234", "user", "pass", "C:\\Temp\\test.xml");
    }
    Bien évidemment, les paramètres HTTP ci-dessus sont complètement faux!

    Rendons à César ce qui appartient à César, la fonction d'extraction du contenu du fichier dans un buffer (szFileContent) est issue de la FAQ developpez.com (http://cpp.developpez.com/faq/cpp/?p...RS_full_buffer).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Publier un fichier XML dans un serveur web
    Par jinar dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 25/04/2008, 10h27
  2. recuper le contenu d'un fichier xml dans un byte[]
    Par KING_OF_GRACELAND dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 13/03/2008, 12h03
  3. [AJAX] Lecture et affichage du contenu d'un fichier xml dans un menu deroulant
    Par undercrash dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/01/2008, 16h26
  4. [JDOM] [Debutant] charger le contenu d'un fichier XMl dans un String
    Par apoca dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 17/10/2007, 18h24
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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