I am sending XML data as a POST request with curl to server as follows:
// $params contains xslt="<xml version ...."
$url = get_cfg_var('Http_Host') . "/webservice/update.php?";
$strParameters = http_build_query($params);
$ch = curl_init($url);
// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strParameters);
$data = curl_exec($ch);
Now when I get the data in webserive/update.php
$_REQUEST['xslt']
contains only some leaf data from xml with most of the tags stripped out like so [but with a lot of new lines]
USD
开发者_JAVA技巧,
.
0
5
I am at a loss to understand what is happening. Is it some double encoding issue?
strParameters does contain proper data in form-urlencoded format [+ for space etc.]
I tried a urldecode before sending it to curl. but it still doesn't solve the issue.
This is more a comment than a concrete solution, but I would consider to use the array method instead of encoding your own:
You don't need to encode the post-data yourself. You can directly use an array, see:
CURLOPT_POSTFIELDS The full data to post in a HTTP "POST" operation. [...] This parameter can either be passed as a urlencoded string like 'para1=val1¶2=val2&...' *or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.
精彩评论