HTTP错误400.请求格式错误

时间:2013-09-08 15:26:21

标签: php xml curl

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

$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;

4 个答案:

答案 0 :(得分:4)

当您的curl网址包含空格时,会出现此错误。你必须编码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;

答案 1 :(得分:2)

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

解决方案

设置CURLOPT_URL

对您的网址进行编码

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

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

参考

答案 2 :(得分:0)

您需要在发送请求之前对您的网址进行编码

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

urlencode

答案 3 :(得分:0)

这里的答案建议使用url_encode或curl_escape函数。如果要符合RFC 3986,请改用rawurlencode()函数。这有助于解决PHP 7中的curl请求。帮助其他人。