我发送XML数据作为POST请求,curl发送到服务器,如下所示:
// $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);
现在我在webserive / update.php中获取数据
$_REQUEST['xslt']
只包含一些来自xml的叶子数据,其中大部分标签被剥离出来[但是有很多新行]
USD
,
.
0
5
我无法理解发生了什么。这是一些双重编码问题吗?
strParameters包含form-urlencoded格式的适当数据[+ for space etc.]
我在尝试使用urldecode之前将其发送给curl。但它仍然没有解决问题。
答案 0 :(得分:0)
这是一个评论而不是一个具体的解决方案,但我会考虑使用数组方法而不是自己编码:
您不需要自己对后期数据进行编码。您可以直接使用数组see:
CURLOPT_POSTFIELDS 要在HTTP“POST”操作中发布的完整数据。 [...]此参数既可以作为urlencoded字符串传递,例如'para1 = val1&amp; para2 = val2&amp; ...'* ,也可以作为数组传递,字段名称为键,字段数据为值。如果value是数组,则Content-Type标头将设置为multipart / form-data。