[fpc-devel] fphttpclient cannot download a file from w3.org
Ondrej Pokorny
lazarus at kluug.net
Tue Jul 2 17:00:04 CEST 2019
Thank you Michael for pointing me to the headers - the problem was
indeed the missing headers.
INDY sends these 2 headers automatically:
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent=Mozilla/3.0 (compatible; Indy Library)
When I add both of them to TFPHTTPClient, I get a valid response (both
are needed). I only used "FPC/3.1 (Free Pascal Compiler)" for the
user-agent instead of the INDY one :)
Best
Ondrej
On 01.07.2019 17:59, Ondrej Pokorny wrote:
>
> Thank you Michael for the response. I'll check what headers INDY sends.
>
> Ondrej
>
>
> On 01.07.2019 14:57, Michael Van Canneyt wrote:
>>
>> I tested:
>>
>> If I run a strace, it just hangs on the read operation:
>>
>> connect(3, {sa_family=AF_INET, sin_port=htons(80),
>> sin_addr=inet_addr("128.30.52.100")}, 16) = -1 EINPROGRESS (Operation
>> now in progress)
>> select(4, NULL, [3], NULL, {tv_sec=3, tv_usec=0}) = 1 (out [3], left
>> {tv_sec=2, tv_usec=884913})
>> getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
>> fcntl(3, F_GETFL) = 0x802 (flags
>> O_RDWR|O_NONBLOCK)
>> fcntl(3, F_SETFL, O_RDWR) = 0
>> sendto(3, "GET /TR/2002/REC-xmldsig-core-20"..., 112, 0, NULL, 0) = 112
>> recvfrom(3,
>>
>> If I do the same with 'wget' it also hangs but in the end gets through..
>>
>> But if you add some headers, you get a proper error response.
>>
>> There is little I can do about that. I can only surmise Indy & wget
>> send different
>> headers (E.G.user-agent) and the server reacts differently on that.
>>
>>
>>
>> Michael.
>>
>> On Mon, 1 Jul 2019, Ondrej Pokorny wrote:
>>
>>> Hello,
>>>
>>> I cannot download
>>> http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
>>> with TFPHTTPClient. Delphi INDY downloads it just fine. Does anybody
>>> know what I am missing?
>>>
>>> Test code:
>>>
>>> program Project1;
>>> uses Classes, SysUtils, fphttpclient;
>>> procedure DownloadFile(const aURI: string; out outStream: TStream);
>>> var
>>> xClient: TFPHTTPClient;
>>> begin
>>> outStream := nil;
>>> xClient := TFPHTTPClient.Create(nil);
>>> try
>>> xClient.AllowRedirect := True;
>>> outStream := TMemoryStream.Create;
>>> xClient.Get(aURI, outStream);
>>> outStream.Position := 0;
>>> except
>>> on E: Exception do
>>> begin
>>> FreeAndNil(outStream);
>>> Writeln(E.ClassName);
>>> Writeln(E.Message);
>>> end;
>>> end;
>>> xClient.Free;
>>> end;
>>> var
>>> S: TStream;
>>> begin
>>> DownloadFile('http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd',
>>> S);
>>> S.Free;
>>> Readln;
>>> end.
>>>
>>> Fails with exception:
>>>
>>> EHTTPClient
>>> Error reading data from socket
>>>
>>> #0 fpc_raiseexception(0x145fb14, 0x0, 0xffffffff) at
>>> ..\inc\except.inc:158
>>> #1 FILLBUFFER(0x145fb14) at fcl-web\src\base\fphttpclient.pp:731
>>> #2 READSTRING(0x15e1c30, 0x0) at fcl-web\src\base\fphttpclient.pp:749
>>> #3 READRESPONSEHEADERS(0x15e1c30) at
>>> fcl-web\src\base\fphttpclient.pp:854
>>> #4 READRESPONSE(0x15e1c30, 0x15b5dc0, 0x145fdb8, 0, false) at
>>> fcl-web\src\base\fphttpclient.pp:1132
>>> #5 DONORMALREQUEST(0x15e1c30, {PROTOCOL = 0x15b5e4c 'http', USERNAME
>>> = 0x0, PASSWORD = 0x0, HOST = 0x15b5ecc 'www.w3.org', PORT = 0, PATH
>>> = 0x1601c9c '/TR/2002/REC-xmldsig-core'..., DOCUMENT = 0x15bc58c
>>> 'xmldsig-core-schema.xsd', PARAMS = 0x0, BOOKMARK = 0x0,
>>> HASAUTHORITY = true}, 0x449d58 'GET', 0x15b5dc0, 0x145fdb8, 0,
>>> false, false) at fcl-web\src\base\fphttpclient.pp:1226
>>> #6 DOMETHOD(0x15e1c30, 0x449d58 'GET', 0x443060
>>> 'http://www.w3.org/TR/2002'..., 0x15b5dc0, 0x145fdb8, 0) at
>>> fcl-web\src\base\fphttpclient.pp:1283
>>> #7 HTTPMETHOD(0x15e1c30, 0x449d58 'GET', 0x443060
>>> 'http://www.w3.org/TR/2002'..., 0x15b5dc0, 0x145fdb8, 0) at
>>> fcl-web\src\base\fphttpclient.pp:1397
>>> #8 GET(0x15e1c30, 0x443060 'http://www.w3.org/TR/2002'...,
>>> 0x15b5dc0) at fcl-web\src\base\fphttpclient.pp:1439
>>> #9 DOWNLOADFILE(0x443060 'http://www.w3.org/TR/2002'..., 0x15b5dc0)
>>> at project1.lpr:14
>>> #10 main at project1.lpr:30
>>>
>>> Ondrej
>>>
>>> _______________________________________________
>>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>>
>>
>> _______________________________________________
>> fpc-devel maillist -fpc-devel at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190702/edb5beee/attachment.html>
More information about the fpc-devel
mailing list