Я использую Indy (Delphi 2009) для запроса файла.php на моем сайте бесплатного хостинга. Этот.php читает параметры, предоставленные с URL-адресом, загружает определенную страницу с сайта сторонних разработчиков и отсылает обратно источник. Все работает нормально, но некоторые мусора всегда предшествуют полезной информации, которую я загружаю. В Firefox я не вижу ничего подобного.
Часть Delphi:
MSource.Lines.Text := IdHTTP1.Get('http://*****.comuv.com/somefile.php?type=upl&id=' + MUsers.Lines.Strings[i]);
.PHP часть:
header('Content-type: text/plain');
...
else if ($_GET['type'] == 'upl')
{
$NextChunkURL = 'http://gdata.youtube.com/feeds/api/users/%UserName%/uploads?start-index=1&max-results=25';
$NextChunkURL = str_replace('%UserName%', $_GET['id'], $NextChunkURL);
$CurChunk = file_get_contents($NextChunkURL);
if ($CurChunk == FALSE)
$CurChunk = 'error downloading [' . $NextChunkURL . ']';
echo $CurChunk;
}
Пример вывода:
User account closed //GARBAGE IS HERE !!! (always present and looks the same to me)
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
Код разработчика для разработчиков Firefox:
<html><head><link rel="alternate stylesheet" type="text/css" href="resource://gre-resources/plaintext.css" title="Переносить длинные строки"></head>
<body><pre>User account closed
<!-- Hosting24 Analytics Code --><script type="text/javascript"
src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
</pre></body></html>
ï"¿
является #$EF#$BB#$BF
и является спецификацией UTF-8, поэтому это проблема сервера, а не клиентская. Ожидается только одна спецификация или нет, но ваш сервер отправляет 4 из них. Просмотр этого сайта в "Firefox Developer Kit" уже является интерпретацией, и открытие этого файла в текстовом редакторе, вероятно, "работает", так как большинство из них его интерпретируют. В качестве показания счетчика сохраните свой сайт в Firefox как HTML и откройте его в шестнадцатеричном редакторе, и вы увидите спецификации, как в вашей программе.