【问题标题】:PHP Curl giving Bad Request - Invalid Header [duplicate]PHP Curl给出错误请求-无效的标头[重复]
【发布时间】:2015-08-14 12:49:22
【问题描述】:
  1. 当我尝试使用 xml 标头和 post 字段点击 curl 时。我收到错误请求。不知道怎么回事,谁能帮忙解决一下?

  2. 标头中传递的移动字段数据经过三重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 数组。好像是重复的。

标签: php xml curl


【解决方案1】:

错误请求通常是从您与之交互的服务器发送的,告诉您请求存在严重问题,最常见的是格式错误的 HTTP 请求,直到远程服务器根本不知道如何处理它。

也就是说:你中大奖了。

从您的请求中逐点删除,直到您收到更具体的错误消息,可以在再次添加内容时更准确地指导您,以免再次遇到相同的错误。

这只是一般建议。我可以更具体地发现的问题已经被问到并得到了回答,因此我将它关闭了一个应该提醒你的重复项,当你尝试处理它时,让 curl 处理内容长度通常更容易(不双关语)。

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 2022-11-11
    • 2016-12-31
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2016-07-01
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多