Reputation:
I need to write a PHP page which would accept an XML document sent over a POST request like this:
POST /mypage.php HTTP/1.1
Host: myhost.com
Content-Type: application/xml
Content-Length: ...
<?xml version="1.0" encoding="utf-8"?>
<data>
...
</data>
This is not data from some HTML form, just a plain XML document.
How can I access this XML in my PHP code?
Upvotes: 26
Views: 25692
Reputation: 433
Any of these would work:
$HTTP_RAW_POST_DATA variable or the php://input stream.
However, for the
$HTTP_RAW_POST_DATA variable
to work, you might need to change .ini setting in your configuration file
Upvotes: 0
Reputation: 44932
You probably want to use the PHP input. Something like
$postText = trim(file_get_contents('php://input'));
Upvotes: 1
Reputation: 4770
If you use print_r($_POST); you will be able to see what you got. Unless i'm missing something... Edit: nvm, totaly forgot about Raw Data :/
Upvotes: -2
Reputation: 1202
http://us.php.net/manual/en/reserved.variables.httprawpostdata.php
$HTTP_RAW_POST_DATA should be available assuming the content-type of the request was not multipart/form-data
Upvotes: 2
Reputation: 287755
Read from php://input
. For example, you could use:
$rawdata = file_get_contents('php://input');
or
$rootNode = simplexml_load_file('php://input');
The alternative, using $HTTP_RAW_POST_DATA
, works, too - but it's slower and needs the PHP configuration always_populate_raw_post_data
.
Upvotes: 39