Jump to content
  • 0
fab

Recuperer Un Contenu Xml Posté En Raw.

Question

Bonjour,

Un prestataire m'envoie un contenu XML sur une url http, je dois recuperer cela dans une base. Mais c'est du "Raw post data", c'est à dire que je n'ai pas de parametre avec mon URL (ex http://www.domain.eu/send.xsl?XML=blablablabla << ds ce cas c'est facile).

Je sais que c'est faisable en php mais j'aimerais savoir si cela parait réalisable en xsl ?

merci d'avance.

Fab

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Pas bien compris...

Le prestataire propose un service web en SOAP ? Il n'accepte que de la méthode POST, c'est ça ? Dans ce cas, nativement dans FileMaker, point de salut.

Il faut utiliser, par exemple, les services d'un plug-in ScriptMaster de 360Works ou WebServices de Beezwax.

Share this post


Link to post
Share on other sites
  • 0

Je suis pas tres familier avec ces termes... (SOAP).

En fait c'est pour l'envoi de SMS, j'envoie en POST une requete sur http://sms.presta.com/ avec comme data XML=mon_contenu_xml.

En retour (pour connaitre le status de livraison) ils me renvoient un contenu XML à une url que j'ai fourni http://ack.mon_url.fr/ .

J'ai déjà eu le cas avec une autre plateforme et nous avons du faire un php intermediaire qui recupere le contenu XML (raw) et le renvoi à mon url XSL en POST dans une variable XMLDATA. j'aurais voulu me passer de ce php intermediaire, et soit gérer ça direct en XSl ou à la limite en Php/FM.

en esperant avoir été le plus explicite possible. merci

Share this post


Link to post
Share on other sites
  • 0

C'est bien un service web en SOAP. Ca peut se gérer directement depuis FileMaker à condition d'avoir accès au fichier WSDL qui décrit le service. Ainsi, le plug-in WebService de Beezwax, par exemple, saura créer automatiquement les fonctions du web service sous forme de nouvelle fonctions externes dans l'éditeur de calcul de FileMaker. C'est très simple à mettre en œuvre.

Sinon, par PHP, il y a bien sûr aussi des possibilités de gérer cela.

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

Pouvez-vous préciser ce que vous faites pour envoyer un post XML http (vers un web service donc) en natif FileMaker ?

Utilisez-vous 'OuvrirURL' ?

Et dans ce cas, comment faites-vous pour lire la réponse ?

J'avoue ne pas tout comprendre, et je n'ai pas trouvé d'exemple de code non plus.

Mille mercis

Olivier

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

regarde l'exemple "Post XML Data" fourni avec le plug-in ScriptMaster

L'url:

http://ws.cdyne.com/WeatherWS/Weather.asmx
 

la requête SOAP (dans ton cas, tu trouveras forcément la syntaxe exacte auprès de ton fournisseur avec les différents paramètres attendus. Dans l'exemple ci-dessous, c'est un Code postal US )

<?xml version="1.0" encoding="UTF-8"?><Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>    <GetCityWeatherByZIP xmlns="http://ws.cdyne.com/WeatherWS/">    <ZIP>30022</ZIP></GetCityWeatherByZIP></Body></Envelope>
 

Le résultat :

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>    <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/">    <GetCityWeatherByZIPResult>        <Success>true</Success>        <ResponseText>City Found</ResponseText>        <State>GA</State>        <City>Alpharetta</City>        <WeatherStationCity>Atlanta</WeatherStationCity>        <WeatherID>2</WeatherID>        <Description>Partly Cloudy</Description>        <Temperature>30</Temperature>        <RelativeHumidity>69</RelativeHumidity>        <Wind>NW6</Wind>        <Pressure>30.21S</Pressure>        <Visibility/>        <WindChill/>        <Remarks/>    </GetCityWeatherByZIPResult></GetCityWeatherByZIPResponse></soap:Body></soap:Envelope>
 

tu peut ensuite t'inspirer de l'exemple "XPath Parse" pour extraire des valeurs précises du résultat de ta requête

Share this post


Link to post
Share on other sites
  • 0

Bonjour Clem,

Merci pour tes infos.

J'avais effectivement repéré ce script, qui marche nickel pour cette météo US ainsi que pour le web service que j'utilise.

Maintenant j'essaye de comprendre s'il est possible de faire ça nativement sous FileMaker, sans plugin, sans script groovy ou autre.

C'est à dire, ouverture d'une url, récupération d'un pointeur sur le flux, pour ensuite positionner quelques attributs (content-type, etc), envoyer les données, et lire la réponse. C'est là où je ne vois pas, comment ferait-on en natif FileMaker pour récupérer le pointeur sur le flux ?

Merci encore.

Olivier

Share this post


Link to post
Share on other sites
  • 0

Nan, ça peut pas l'faire.

Un web service de ce type fonctionne en méthode POST et non GET. Hors l'ouverture d'URL par FileMaker ou l'utilisation d'un web viewer ne fait que de la méthode GET. Donc point de salut sans outil externe à FileMaker (ScriptMaster ou Troi-URL, par exemple).

[mode vendredi ON]

Share this post


Link to post
Share on other sites
  • 0

Ok pour script master donc.

Je constate que le parseur ne fonctionne pas avec des caractères accentués. Quelqu'un a-t-il contourné le problème autrement qu'en les remplacant ?

Share this post


Link to post
Share on other sites
  • 0

Ok pour script master donc.

Je constate que le parseur ne fonctionne pas avec des caractères accentués. Quelqu'un a-t-il contourné le problème autrement qu'en les remplacant ?

Bonsoir,

Il n'y a pas à contourner le problème...

Dans le script Groovy, il suffit juste de paramétrer le flux de lecture des données avec l'encodage attendu :

...InputStream inputStream = new ByteArrayInputStream( someXML.getBytes("UTF-8") );...

si le résulat retourné par la requête SOAP est en encodé en "UTF-8 bien évidemment.

Java SE 6 supported encodings

Share this post


Link to post
Share on other sites
  • 0

Bonjour,

Je déterre ce sujet en me demandant si ce n'est pas la solution qu'il me faut. Je cherche à encoder un flux envoyé vers un webservice en UTF-8.

Pensez-vous qu'en modifiant la fonction POSTDATAXML dans le RegisterGroovy, et en y rajoutant une propriété, cela ferait l'affaire ? J'y ajoute :

conn.setRequestProperty( \"charset\", \"utf-8\" );¶

Ce qui donnerait :

RegisterGroovy( "PostXMLData( url ; xml ; soapaction )" ; "// Envoi les donnees¶URL url = new URL(url);¶HttpURLConnection conn = url.openConnection();¶if( soapaction != null ) conn.setRequestProperty( \"SOAPAction\", soapaction );¶conn.setRequestProperty( \"Content-Type\", \"application/xml\" );¶conn.setRequestProperty( \"charset\", \"utf-8\" );¶conn.setDoOutput(true);¶OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());¶wr.write(xml);¶wr.close();¶¶// Ici on obtient la réponse¶String response;¶InputStream responseStream;¶try {¶	responseStream = conn.getInputStream();¶	success = 1;¶} catch( IOException e ) {¶	success = 0;¶	if( conn.getResponseCode() == 500 ) {¶		responseStream = conn.getErrorStream();¶	} else throw e;¶}¶response = responseStream.getText(\"utf-8\");¶responseStream.close();¶return response;"; "isGui=false" )

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...