RE: reading incoming xml

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is what I was looking for.  Thank you.  I could not change the
client since that client is being used for other servers in its current
configuration.  All I needed was a way to get to the XML string coming
in.  

$postText = trim(file_get_contents('php://input');

worked perfectly.  Now that I have this blob of XML I can give it to
simpleXML or another parser I was recently shown to work with it.  I'm
surprised it was so difficult to find.  $GLOBALS['HTTP_RAW_POST_DATA']
was empty by the way and that I'd seen before.

Also, sorry if I threw anyone off by referring to the other server the
client works with as an XML server.  I only referred to it as such
because it is a server that accepts XML input and responds with XML
output to a number of clients.  It is not used as a typical html server
for browsing etc.  

Anyway, I was looking to get a hold of the raw data coming in and it
looks like this was it.  I really do appreciate the help...

Larry


On Sat, 2008-03-01 at 22:06 -0500, Andrés Robinet wrote:
> You can get what you post either with:
> 
> $postText = trim(file_get_contents('php://input');
> 
> Or with:
> 
> $postText = $GLOBALS["HTTP_RAW_POST_DATA"];
> 
> About HTTP_RAW_POST_DATA http://us2.php.net/manual/en/reserved.variables.php
> Read the notes here http://us2.php.net/variables.predefined
> 
> "It should be noted that $HTTP_RAW_POST_DATA only exists if the encoding type of
> the data is -not- the default of application/x-www.form-urlencoded, and so, to
> accessing raw post data from an HTTP form requires setting enctype= in your
> HTML. "
> 
> So, if $RAW_POST_DATA doesn't exist, it is because you should be able to use
> $_POST (unless you set PHP to always populate raw post data in php.ini). The
> preferred method is, however, to read 'php://input'
> 
> Then after you get the XML body, you must use one of the XML extensions
> available in PHP to parse the XML data (search for it as it's not part of this
> help pack ;) ).
> 
> Regards,
> 
> Rob(inet)
> 
> Andrés Robinet | Lead Developer | BESTPLACE CORPORATION 
> 5100 Bayview Drive 206, Royal Lauderdale Landings, Fort Lauderdale, FL 33308 |
> TEL 954-607-4207 | FAX 954-337-2695 | 
> Email: info@xxxxxxxxxxxxx  | MSN Chat: best@xxxxxxxxxxxxx  |  SKYPE: bestplace |
>  Web: bestplace.biz  | Web: seo-diy.com
> 
> > -----Original Message-----
> > From: Larry Brown [mailto:larry.brown@xxxxxxxxxxxxxxxxxxxxx]
> > Sent: Saturday, March 01, 2008 9:43 PM
> > To: Nathan Nobbe
> > Cc: php
> > Subject: Re:  reading incoming xml
> > 
> > The incoming message to the server is:
> > 
> > POST /vendorXML.html HTTP/1.0
> > MIME-Version: 1.0
> > Content-type: text/html
> > Content-length: 114
> > Content-transfer-encoding: text
> > Request-number: 1
> > Document-type: Request
> > Interface-Version: Test 1.4
> > Connection: close
> > 
> > <?xml version="1.0" encoding="UTF-8"?><Data>vendorCompanyID</Data>
> > 
> > 
> > Larry
> > 
> > On Sat, 2008-03-01 at 18:08 -0500, Nathan Nobbe wrote:
> > 
> > > hmm,  it looks to me like you want to post a bunch of raw data to the
> > > server.  im not sure exactly how to do that w/ the php curl functions...
> > > everything ive seen uses CURLOPT_POSTFIELDS to supply an associative
> > array
> > > of data to be posted.  in this case you could easily send you data across
> > by
> > > choosing a name for the index, something like 'postdata', anything will
> > do,
> > > then it will be accessible on the system youre posting to via
> > > $_POST['postdata'].
> > >
> > > also, inlooking at your usage of CURLOPT_CUSTOMREQUEST, i dont believe
> > youre
> > > using it correctly,  i think youre just supposed to put a string
> > > representing the desired http method in there, so something like 'HEAD',
> > > 'PUT', or in this case 'POST'.  then you would supply the data as i said
> > > earlier, using CURLOPT_POSTFIELDS.  so in all, i think something like
> > this
> > > would work for you,
> > >
> > 
> > >
> > >
> > > and also, in reading the warning about CURLOPT_CUSTOMREQUEST, you might
> > just
> > > go with CURLOPT_POST => true, since you arent using an obscure http
> > method.
> > > im not sure exactly how to determine if the server supports this method
> > or
> > > not.  anyway, i found this in 'man curl_easy_setopt'  (thats the manpage
> > for
> > > the c function php uses for the CURLOPT_CUSTOMREQUEST option).
> > >
> > >               Many people have wrongly used this option to replace the
> > > entire request with their own, including multiple headers and POST
> > contents.
> > > While that  might
> > >               work  in  many  cases,  it will cause libcurl to send
> > invalid
> > > requests and it could possibly confuse the remote server badly. Use
> > > CURLOPT_POST and CUR-
> > >               LOPT_POSTFIELDS to set POST data. Use CURLOPT_HTTPHEADER to
> > > replace or extend the set of headers sent by libcurl. Use
> > > CURLOPT_HTTP_VERSION  to  change
> > >               HTTP version.
> > >
> > > -nathan
> > --
> > Larry Brown <larry.brown@xxxxxxxxxxxxxxxxxxxxx>
> > 
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> 
-- 
Larry Brown <larry.brown@xxxxxxxxxxxxxxxxxxxxx>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux