Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

xml in php

Anoniem
petervk
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
    fc2616
    fc2616-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: PHP input/output streams.

Beantwoord deze vraag

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