HTTP 错误 400.请求格式不正确


HTTP Error 400. The request is badly formed

我为此收到同样的错误,请建议

$url="http://domain.com/manage/File Name.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);                
curl_setopt($ch, CURLOPT_URL, $url);    // get the url contents
$data = curl_exec($ch); // execute curl request
curl_close($ch);
echo $data;

当您的 curl url 包含空格时,会出现此错误。 您必须对 URL 进行编码才能删除空格。

$base_url = "http://domain.com/manage/";
$url = "File Name.xml";
$ch = curl_init();
$final_url = $base_url . curl_escape($ch, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);                
curl_setopt($ch, CURLOPT_URL, $url);    // get the url contents
$data = curl_exec($ch); // execute curl request
curl_close($ch);
echo $data;

如注释中所述,您的网址不包含编码字符(空格)。

溶液

在设置CURLOPT_URL对 URL 进行编码

curl_setopt($ch, CURLOPT_URL, urlencode($url));

还可以使用 curl_escape() 对查询字符串部分进行编码。

引用

  • cURL 在处理带有冒号的 URL 源时出现问题的答案。

您需要在发送请求之前对 URL 进行编码

<?php
$url=urlencode("http://domain/file name.xml");
?>

乌伦科

这里的答案建议使用url_encode或curl_escape函数。如果你想符合 RFC 3986,请改用 rawurlencode() 函数。这有助于 PHP 7 中的 curl 请求。哎呀,它可以帮助别人。