|
|
|
| Есть код для скачивания файлов
public static function get($url)
{
$nn="\r\n";
$url_info = parse_url($url);
$host = isset($url_info['host']) ? $url_info['host'] : '';
$path = isset($url_info['path']) ? $url_info['path'] : '/';
$port = isset($url_info['port']) ? $url_info['port'] : 80;
if(isset($url_info['query'])) // вернем параметры запроса,
$path .= '?' . $url_info['query']; // если были в исходном URI
// попробуем соединиться с сервером
if(!($fp = fsockopen($host, $port, $ern, $ers)))
throw new DownloadException("Cannot connect to $host: Error #$ern ($ers)", E_USER_ERROR);
$query="GET $url HTTP/1.0".$nn.
'User-Agent: Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4'.$nn.
"Host: $host".$nn.
'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'.$nn.
'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8'.$nn.
'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1'.$nn.
'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0'.$nn.
'Cookie2: $Version=1'.$nn.
'Connection: Close'.$nn.$nn;
fputs($fp,$query);
// прочтем ответ
for($reply = false; !feof($fp);)
{
echo '.';
$file=fopen('test.txt', 'a');// Создаем копию файла
$line = fgets($fp);
if($reply !== false)
$reply = $line;
else if($line == "\r\n")
$reply = '';
if((fwrite($file, $line)) === false)
throw new DownloadException("Unable write to file.", E_USER_ERROR);
}
fclose($fp);
}
|
собственно не получается скачать файл у которого есть пробелы в урле и домен задан в виде ip адресса, вадает 400 Bad Request. И я не могу понять причина в пробелах или в доммене? | |
|
|
|
|
|
|
|
для: Filsh
(11.09.2011 в 22:03)
| | Пробелы нужно кодировать при помощи %20 и вообще все спец-символы следует подвергать кодированию, например, при помощи функции urlencode(). | |
|
|
|