【发布时间】:2015-08-14 12:49:22
【问题描述】:
当我尝试使用 xml 标头和 post 字段点击 curl 时。我收到错误请求。不知道怎么回事,谁能帮忙解决一下?
标头中传递的移动字段数据经过三重des转换
$url="www.test.com/api";
$xml = '<?xml version="1.0" encoding="UTF-8"?><a><b>hai</b></a>';
$xml_header = trim('<?xml version="1.0" encoding="UTF-8"?><mobile>4xKReHFU60Ova0aqHxZldg==</mobile>
') ;
$headers = array(
"Content-type: text/xml",
"Content-length: " .strlen($xml_header),
"Connection: close",
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// set url
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("xml"=>$xml));
// Check if any error occurred
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
echo "<pre>";var_dump($info);
echo 'error:' . curl_error($ch);
//echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
}
$result = curl_exec($ch);
echo "<pre>";print_r($result);exit;
【问题讨论】:
-
你试过
application/xml吗? -
您将内容长度设置为一个字符串的长度,但据我所知,不要在任何地方使用它。然后将内容类型设置为 text/XML,但发送的内容不是有效的 XML,长度也不是你说的那样。
-
试过的应用程序/xml没有变化
-
您的 $xml 包含标头,并且您在 $xml_header 再次将其传递给 $headers 数组。好像是重复的。