Vraag & Antwoord

Webprogrammeren & scripting

xml in php

7 antwoorden
  • hallo, ik wil een xml request opsturen naar de server, en vervolgens de complete string opvragen. dus niet in verschillende strings verdeelt, maar gewoon de complete xml request. Wie kan mij hiermee helpen? dank, Peter
  • En hoe stuur je die xml request? Heb je een voorbeeldje online staan of wat relevante code?
  • ik stuur in de body van het HttpRequest (zie rfc2616 [http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3]) een stukje tekst, ongeacht wat dit is. dat stukje tekst wil ik op de server compleet hebben. dus als ik er een stukje xml inzet, bv <albums name="test"/> moet ie deze gewoon helemaal terug geven, en niet met $_POST parsen zodat ik een variable '<albums name' krijg met de waarde 'test', zoals het met html form post gaat. dank Peter
  • Je zal de gegevens moeten encoderen (php voorbeeld: urlencode($body)). En waarschijnlijk ook even moeten aangeven in de request dat de gegevens "application/x-www-form-urlencoded" zijn (maar dat laatste weet ik niet zeker).
  • Ja, bij een http-post op een XMLHttpRequest moet je de juiste content-type expliciet aangeven (application/x-www-form-urlencoded). Ik heb even een klein testje gemaakt: [code:1:68011dc0f5]<script type="text/javascript"> <!-- var client = new XMLHttpRequest(); function encodePost(name, value) { return escape(name) + "=" + escape(value); } function handler() { if (client.readyState == 4 && client.status == 200) { // readyState = 4 (loaded) en een HTTP 200 (OK), dus waarschijnlijk een goede respons alert(client.responseText); } } window.onload = function() { client.onreadystatechange = handler; client.open("POST", "/xmltest.php"); client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); client.send(encodePost("tekst1", "<albums name=\"test\"/>") + "&" + encodePost("tekst2", "Dit is tekst 2")); } //--> </script>[/code:1:68011dc0f5] En een php-scriptje: [code:1:68011dc0f5]<?php print 'Ontvangen tekst 1: ' . $_POST['tekst1'] . '; en tekst 2: ' . $_POST['tekst2']; ?>[/code:1:68011dc0f5] Ik gebruik gewoon de ingebouwde escape functie van javascript om de tekst te encoden. Aan de serverkant kun je met php de waarden direct met $_POST uitlezen.
  • jij doet het dmv post variablen, maar ik wil mn eigen post bericht opstellen, ik wil helemaal niet met postvariablen werken, omdat ik nl slechts een xml bericht wil opsturen. Denk hierbij bv aan een soap bericht bij een webservice oid. Een voorbeeld stukje js: client.onreadystatechange = handler; client.open("POST", "/xmltest.php"); client.setRequestHeader("Content-Type", "text/xml"); client.send('<albums name="test"/>')); de vraag is, hoe kan ik dit bericht opvangen in php. In moderne talen als .net of java gebruik je Request.InputStream, en je krijgt de complete inhoud. Hoe werkt dit in php? Peter
  • Ow... Dan moet je de ingebouwde stream wrapper "php://input" gebruiken. Dit gebruik je gewoon met fopen en dan kun je direct de ruwe body uitlezen. Meer info: [url=http://nl2.php.net/wrappers.php]PHP input/output streams[/url].

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.