tags:

views:

27

answers:

3

I've verified that $requestDom->saveXml() is returning valid XML but at the destination URL I have print_r($_POST) and it doesn't receive anything. Am I missing something here? :-\

    $connection = curl_init();
    curl_setopt($connection, CURLOPT_POSTFIELDS, array(
        'xml' => $requestDom->saveXml()
    ));
    curl_setopt($connection, CURLOPT_HEADER, false); //with or without this option, it doesn't work
    curl_setopt($connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($connection, CURLOPT_POST, true);
    curl_setopt($connection, CURLOPT_URL, 'http://sample.com');

    $response = curl_exec($connection);
A: 

I can reproduce the problem. Ask for help in the #php.pecl channel on EFnet.

cweiske
A: 

Does any of the code after curl_init() run? If not, you may need to make sure curl is installed properly.

Example on Ubuntu:

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
sudo /etc/init.d/apache2 restart

Otherwise, you should be able to echo $response to return some text, provided text is being returned at the URL you've specified.

mts
A: 

After further research, I've discovered that the proper method to post xml to a destination URL is to....

$connection = curl_init();
curl_setopt($connection, CURLOPT_POSTFIELDS, $requestDom->saveXml());
curl_setopt($connection, CURLOPT_HEADER, false); //with or without this option, it doesn't work
curl_setopt($connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($connection, CURLOPT_POST, true);
curl_setopt($connection, CURLOPT_URL, 'http://sample.com');

$response = curl_exec($connection);

And then on the file receiving this information, use:

            $post = file_get_contents("php://input");
            $request = simplexml_load_string($post);
Webnet