<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1688858</guid>
        <pubDate>Fri, 07 Sep 2007 08:23:51 +0000</pubDate>
        <title>не могу скачать файл с интернета</title>
        <link>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1688858</link>
        <description><![CDATA[Rouse_: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">////////////////////////////////////////////////////////////////////////////////</div><div class="code_line">//</div><div class="code_line">// &nbsp;****************************************************************************</div><div class="code_line">// &nbsp;* Project &nbsp; : DownloadViaProxy</div><div class="code_line">// &nbsp;* Purpose &nbsp; : Демо скачивания файла с учетом бейсик авторизации и прокси</div><div class="code_line">// &nbsp;* Author &nbsp; &nbsp;: Александр (Rouse_) Багель</div><div class="code_line">// &nbsp;* Copyright : © Fangorn Wizards Lab 1998 - 2007.</div><div class="code_line">// &nbsp;* Version &nbsp; : 1.03</div><div class="code_line">// &nbsp;* Home Page : http://rouse.drkb.ru</div><div class="code_line">// &nbsp;****************************************************************************</div><div class="code_line">//</div><div class="code_line">&nbsp;</div><div class="code_line">program DownloadViaProxy;</div><div class="code_line">&nbsp;</div><div class="code_line">{$APPTYPE CONSOLE}</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows,</div><div class="code_line">&nbsp;&nbsp;SysUtils,</div><div class="code_line">&nbsp;&nbsp;Classes,</div><div class="code_line">&nbsp;&nbsp;WinInet;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TDownloadParams = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;FileURL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Запрос для файла</div><div class="code_line">&nbsp;&nbsp; &nbsp;Proxy, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// список прокси</div><div class="code_line">&nbsp;&nbsp; &nbsp;ProxyBypass, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// дополниотельный список прокси</div><div class="code_line">&nbsp;&nbsp; &nbsp;AuthUserName, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // логин для Authorization: Basic</div><div class="code_line">&nbsp;&nbsp; &nbsp;AuthPassword: String; &nbsp; // пароль для Authorization: Basic</div><div class="code_line">&nbsp;&nbsp; &nbsp;DownloadFrom, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // смещение от начала данных</div><div class="code_line">&nbsp;&nbsp; &nbsp;NeedDataSize: DWORD; &nbsp; &nbsp;// необходимый размер</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">function DownloadFileEx(</div><div class="code_line">&nbsp;Params: TDownloadParams; OutputData: TStream): Boolean;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;function DelHttp(URL: String): String;</div><div class="code_line">&nbsp;var</div><div class="code_line">&nbsp;&nbsp; HttpPos: Integer;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; HttpPos := Pos(&#39;http://&#39;, URL);</div><div class="code_line">&nbsp;&nbsp; if HttpPos &#62; 0 then Delete(Url, HttpPos, 7);</div><div class="code_line">&nbsp;&nbsp; Result := Copy(Url, 1, Pos(&#39;/&#39;, Url) - 1);</div><div class="code_line">&nbsp;&nbsp; if Result = &#39;&#39; then Result := URL;</div><div class="code_line">&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;Accept = &#39;Accept: */*&#39; + sLineBreak;</div><div class="code_line">&nbsp;ProxyConnection = &#39;Proxy-Connection: Keep-Alive&#39; + sLineBreak;</div><div class="code_line">&nbsp;LNG = &#39;Accept-Language: ru&#39; + sLineBreak;</div><div class="code_line">&nbsp;AGENT =</div><div class="code_line">&nbsp;&nbsp; &#39;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; &#39; +</div><div class="code_line">&nbsp;&nbsp; &#39;Windows NT 5.1; SV1; .NET CLR 2.0.50727)&#39; + sLineBreak;</div><div class="code_line">var</div><div class="code_line">&nbsp;FSession, FConnect, FRequest: HINTERNET;</div><div class="code_line">&nbsp;FHost, FScript, SRequest, ARequest: String;</div><div class="code_line">&nbsp;Buff, IntermediateBuffer: array of Byte;</div><div class="code_line">&nbsp;BytesRead, Res, Len,</div><div class="code_line">&nbsp;FilePosition, OpenTypeFlags, ContentLength: Cardinal;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := False;</div><div class="code_line">&nbsp;&nbsp;ARequest := Params.FileURL;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Небольшой парсинг</div><div class="code_line">&nbsp;&nbsp;// вытаскиваем имя хоста и параметры обращения к скрипту</div><div class="code_line">&nbsp;&nbsp;FHost := DelHttp(ARequest);</div><div class="code_line">&nbsp;&nbsp;FScript := ARequest;</div><div class="code_line">&nbsp;&nbsp;Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Инициализируем WinInet</div><div class="code_line">&nbsp;&nbsp;if Params.Proxy = &#39;&#39; then</div><div class="code_line">&nbsp;&nbsp; OpenTypeFlags := INTERNET_OPEN_TYPE_PRECONFIG</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; OpenTypeFlags := INTERNET_OPEN_TYPE_PROXY;</div><div class="code_line">&nbsp;&nbsp;FSession := InternetOpen(&#39;&#39;,</div><div class="code_line">&nbsp;&nbsp;OpenTypeFlags, PChar(Params.Proxy), PChar(Params.ProxyBypass), 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if not Assigned(FSession) then Exit;</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Попытка соединения с сервером</div><div class="code_line">&nbsp;&nbsp; &nbsp;FConnect := InternetConnect(FSession, PChar(FHost),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;INTERNET_DEFAULT_HTTP_PORT, PChar(Params.AuthUserName),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;PChar(Params.AuthPassword), INTERNET_SERVICE_HTTP, 0, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if not Assigned(FConnect) then Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;// Подготавливаем запрос</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;FRequest := HttpOpenRequest(FConnect, &#39;GET&#39;, PChar(FScript), nil,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#39;&#39;, nil, 0, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;// добавляем необходимые заголовки к запросу</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;HttpAddRequestHeaders(FRequest, Accept,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Length(Accept), HTTP_ADDREQ_FLAG_ADD);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;HttpAddRequestHeaders(FRequest, ProxyConnection,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Length(ProxyConnection), HTTP_ADDREQ_FLAG_ADD);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;HttpAddRequestHeaders(FRequest, LNG,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Length(LNG), HTTP_ADDREQ_FLAG_ADD);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;HttpAddRequestHeaders(FRequest, AGENT,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Length(AGENT), HTTP_ADDREQ_FLAG_ADD);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;// Проверяем запрос:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Len := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Res := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SRequest := &#39; &#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if Len &#62; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; SetLength(SRequest, Len);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if not Assigned(FConnect) then Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Отправляем запрос</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if not (HttpSendRequest(FRequest, nil, 0, nil, 0)) then Exit;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Узнаем размер файла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ContentLength := InternetSetFilePointer(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FRequest, 0, nil, FILE_END, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ContentLength = DWORD(-1) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ContentLength := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// выставляем позцию, откуда нужно начинать скачку</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;FilePosition := InternetSetFilePointer(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FRequest, Params.DownloadFrom, nil, FILE_BEGIN, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if FilePosition = DWORD(-1) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FilePosition := 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выставляем размер приемного буффера</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if Params.NeedDataSize = 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Params.NeedDataSize := ContentLength;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if Integer(FilePosition) + Params.NeedDataSize &#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Integer(ContentLength) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Params.NeedDataSize := ContentLength - FilePosition;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // если не смогли определить размер данных - читаем все что прочтется</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if Params.NeedDataSize &#60;= 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(IntermediateBuffer, 8192);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ContentLength := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Params.NeedDataSize := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BytesRead := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while InternetReadFile(FRequest, @IntermediateBuffer[0],</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;100, BytesRead) do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if BytesRead &#62; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(Buff, ContentLength + BytesRead);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Move(IntermediateBuffer[0], Buff[ContentLength], BytesRead);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Inc(ContentLength, BytesRead);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Params.NeedDataSize := ContentLength;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// в противном случае, принимаем данные как обычно</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(Buff, Params.NeedDataSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not InternetReadFile(FRequest, @Buff[0],</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Params.NeedDataSize, BytesRead) then Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;OutputData.Write(Buff[0], Params.NeedDataSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := True;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;InternetCloseHandle(FRequest);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;InternetCloseHandle(FConnect);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;InternetCloseHandle(FSession);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Params: TDownloadParams;</div><div class="code_line">&nbsp;&nbsp;Data: TMemoryStream;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;ZeroMemory(@Params, SizeOf(TDownloadParams));</div><div class="code_line">&nbsp;&nbsp; &nbsp;Params.FileURL :=</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#39;http://google.com/index.html&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Data := TMemoryStream.Create;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if DownloadFileEx(Params, Data) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Data.SaveToFile(&#39;c:\test.htm&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Data.Free;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp;except</div><div class="code_line">&nbsp;&nbsp; &nbsp;on E:Exception do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Writeln(E.Classname, &#39;: &#39;, E.Message);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Еще пример использования<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function GetMultiproxyProxyList(ResultList: TStringList): Boolean;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Params: TDownloadParams;</div><div class="code_line">&nbsp;&nbsp;Data: TStringStream;</div><div class="code_line">&nbsp;&nbsp;AResult: String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := False;</div><div class="code_line">&nbsp;&nbsp;ZeroMemory(@Params, SizeOf(TDownloadParams));</div><div class="code_line">&nbsp;&nbsp;Params.FileURL :=</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;http://multiproxy.org/txt_all/proxy.txt&#39;;</div><div class="code_line">&nbsp;&nbsp;Data := TStringStream.Create(&#39;&#39;);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;if DownloadFileEx(Params, Data) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetLength(AResult, Data.Size);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Data.Read(AResult, Data.Size);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ResultList.Text := AResult;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := True;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;Data.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
Еще один пример использования, но вот этот сервер не дает размер файла:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function GetProxyListOrgProxyList(ResultList: TStringList): Boolean;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Params: TDownloadParams;</div><div class="code_line">&nbsp;&nbsp;Data: TStringStream;</div><div class="code_line">&nbsp;&nbsp;AResult: String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := False;</div><div class="code_line">&nbsp;&nbsp;ZeroMemory(@Params, SizeOf(TDownloadParams));</div><div class="code_line">&nbsp;&nbsp;Params.FileURL :=</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;http://proxy-list.org/downloadproxylist.php?sp=-1&amp;pp=any&amp;pt=any&amp;pc=any&amp;ps=any&#39;;</div><div class="code_line">&nbsp;&nbsp;// Params.DownloadFrom := 4; // &#60;- попытка дозакачки...</div><div class="code_line">&nbsp;&nbsp;Data := TStringStream.Create(&#39;&#39;);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;if DownloadFileEx(Params, Data) then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if Data.Size = 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ResultList.Add(&#39;Сервер не поддерживает дозакачку.&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetLength(AResult, Data.Size);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Data.Read(AResult, Data.Size);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ResultList.Text := AResult;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := True;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;Data.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>Rouse_</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1688651</guid>
        <pubDate>Fri, 07 Sep 2007 06:47:55 +0000</pubDate>
        <title>не могу скачать файл с интернета</title>
        <link>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1688651</link>
        <description><![CDATA[Kuss: а у меня переменная BufferLen не меняется, постоянно большое число и не пишется в файл. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-09-07T07:25:23+00:00">07.09.07, 07:25</time></span></span><br>
у меня тоже<br>
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);  //вот здесь hURL получается nil <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-09-07T07:29:22+00:00">07.09.07, 07:29</time></span></span><br>
ftp требует имя и пароль куда их пихать???]]></description>
        <author>Kuss</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1678308</guid>
        <pubDate>Tue, 28 Aug 2007 13:30:16 +0000</pubDate>
        <title>не могу скачать файл с интернета</title>
        <link>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1678308</link>
        <description><![CDATA[BOGDANchik: в общем вопрос решен<br>оказалось дело в винде а не в исходном коде]]></description>
        <author>BOGDANchik</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1677042</guid>
        <pubDate>Mon, 27 Aug 2007 14:45:53 +0000</pubDate>
        <title>не могу скачать файл с интернета</title>
        <link>https://forum.sources.ru/index.php?showtopic=200664&amp;view=findpost&amp;p=1677042</link>
        <description><![CDATA[BOGDANchik: нижеследующий код не работает после переустановки винды, в чем проблема<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function GetInetFile(const fileURL, FileName: string): boolean;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;BufferSize = 1024;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;hSession, hURL: HInternet;</div><div class="code_line">&nbsp;&nbsp;Buffer: array[1..BufferSize] of Byte;</div><div class="code_line">&nbsp;&nbsp;BufferLen: DWORD;</div><div class="code_line">&nbsp;&nbsp;f: file;</div><div class="code_line">&nbsp;&nbsp;sAppName: string;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := False;</div><div class="code_line">&nbsp;&nbsp;sAppName := ExtractFileName(Application.ExeName);</div><div class="code_line">&nbsp;&nbsp;hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0); &nbsp;//вот здесь hURL получается nil</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;AssignFile(f, FileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Rewrite(f,1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;application.ProcessMessages;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BlockWrite(f, Buffer, BufferLen);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;until</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BufferLen = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CloseFile(f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := True;</div><div class="code_line">&nbsp;&nbsp; &nbsp;except</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CloseFile(f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;InternetCloseHandle(hURL);</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;InternetCloseHandle(hSession);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
очень нужно, раньше такого небыло]]></description>
        <author>BOGDANchik</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	