2010-11-09 13 views
1

J'essaie d'utiliser libcurl pour faire un post SOAP http sur un service web. J'ai les requêtes SOAP déjà formées dans les fichiers XML que je génère. Maintenant, j'ai besoin de transefer ces fichiers XML sur le webservice. N.B. Je suis assez nouveau pour écrire des webservices (surtout en C).Envoi de requêtes SOAP en utilisant libcurl comme fichier XML

Est-il possible d'envoyer les requêtes SOAP directement à partir du fichier XML en utilisant libcurl? Ou dois-je lire le contenu dans une chaîne? Je suis limité à l'utilisation du langage de programmation C pour terminer la tâche.

J'ai regardé la documentation et les différents extraits de code, mais je n'arrive pas à localiser quoi que ce soit pour faire la demande. Ce lien de boucle le fait à travers une chaîne http://curl.haxx.se/libcurl/c/post-callback.html). À des fins de vitesse je préférerais de beaucoup ne pas avoir à passer à une chaîne avant de l'envoyer.

+0

le « vide * userp » du rappel est ce que vous fournissez dans la partie DATA. ILE * 'par exemple. –

Répondre

2

vous utilisez curl_easy_setopt()? alors vous pouvez jeter un oeil à CURLOP_WRITEFUNCTION et CURLOPT_WRITEDATA.

+0

J'ai essayé d'accomplir ceci en utilisant cette méthode sans beaucoup de chance. Je n'ai même pas été en mesure d'effectuer la publication en utilisant la commande curl suivante: curl -v -X POST -d @ fichier.xml "Content-Type: texte/xml" ": 80/service" –

1

La façon dont je le fais:
* Get TinyXML, charger le fichier dans un TiXmlDocument et utiliser le TiXmlPrinter pour obtenir le fichier XML en tant que chaîne
* Définissez la valeur de la chaîne dans le corps de la demande de poste (également, mis en-têtes, mais ils sont les mêmes que HTTP têtes standard)
* Jetez un oeil à curl_easy_setopt() pour le rappel et d'autres choses (:

Bonne chance (:

+1

Pourriez-vous poster un exemple de code de la façon dont cela fonctionne. Ce serait vivement apprécié. –

+1

En fait .. avez-vous les en-têtes écrits dans les fichiers xml? C'est important. Si tel est le cas, TinyXML ne sera pas utilisé, car il ne reconnaîtra pas les en-têtes et n'analysera pas le document. Deux options alors .. mais tout d'abord - sont les en-têtes dans les fichiers? –