我将 XML 数据作为带有 curl 的 POST 请求发送到服务器,如下所示:
// $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 确实包含形式 urlencoded 格式的适当数据 [+ 表示空格等]
在将它发送到 curl 之前,我尝试了一个 urldecode。但仍然没有解决问题。
最佳答案
这更多的是评论而不是具体的解决方案,但我会考虑使用数组方法而不是自己编码:
您不需要自己对后期数据进行编码。可以直接用数组,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.
关于php - Curl 请求损坏 XML 发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777530/