I'm sending from a php cli with:
$post = '<?xml version="1.0"
encoding="UTF-8"?><Data>'.$vendorCompanyID.'</Data>';
$message = generatePage($page, $post);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://myserver/mytestpage.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $message);
$data=curl_exec($ch);
I've the server page (mytestpage.php) set up as:
echo "hello\n";
print_r($_SERVER);
where I replace SERVER with POST etc and I can't find the string '<?xml
version="1.0" encoding="UTF-8"?><Data>'.$vendorCompanyID.'</Data>' in
the $data output. I do get the hello so I know I am hitting the server
and when it is set to $_SERVER as listed above I get the expected array
but $_POST is empty.
Larry
On Sat, 2008-03-01 at 16:59 -0500, Nathan Nobbe wrote:
> On Sat, Mar 1, 2008 at 4:12 PM, Larry Brown <
> [EMAIL PROTECTED]> wrote:
>
> > I am running apache with php. I set up a curl script to send an xml
> > request to the php page
>
>
> did you use a request header to somehow set a mime type to indicate youre
> looking for xml? could you show us this request, im not sure how to request
> for xml specifically..
>
>
> > My $_POST array is empty though.
>
>
> is this on the system where the xml will be sent from? you have to
> populate the post fields in the request by using the curl option
> CURLOPT_POST to indicate you are posting, and CURLOPT_POSTFIELDS, to pass an
> array of parameters that will be used as post fields. then the $_POST array
> will be populated on the provider system.
>
> Is there some other
> > place I should be looking? $_SERVER shows the incoming message as a
> > post but again the data isn't there.
>
>
> still curious if youre looking on the consumer (system sending curl request)
> or the provider, (system providing the xml data via response).
>
>
> > Does apache/php place the xml in
> > some other location for me to access?
> >
>
> depending on how you configure curl, the data can be in different places.
> the easiest way (i think) is to use the CURLOPT_RETURNTRANSFER option. then
> the response will be returned from curl_exec() (rather than a boolean
> success flag).
>
> here is sample code from a consumer and a provider; theyre up on my server
> so you can try using the consumer if you want.
>
> CONSUMER
> -------------------
> <?php
> $curlHandle = curl_init('http://nathan.moxune.com/postXml.php');
> curl_setopt_array($curlHandle, array(
> CURLOPT_RETURNTRANSFER => true,
> CURLOPT_POST => true,
> CURLOPT_POSTFIELDS => array(
> 'token' => 1
> )
> ));
>
> $response = curl_exec($curlHandle);
> if(!empty($response)) {
> try {
> $sxml = new SimpleXmlElement($response);
> echo $sxml->asXML();
> } catch(Exception $e) {
> die($e->getMessage());
> }
> }
> ?>
>
> PROVIDER
> -----------------
> <?php
> if($_POST['token'] == 1) { ?>
> <someString>
> <moreHere>
> <lessHere />
> </moreHere>
> </someString>
> <?php } ?>
>
> -nathan
--
Larry Brown <[EMAIL PROTECTED]>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php