Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2013-06

Accessing freedb.org using Indy's TIdHTTP Get method

2 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Alejandro Gonzalo

Using fpc's cddb unit I was able to form the freedb query string from the CD in my drive (for "The Great Bluesmen" it was : 2b10b215 21 150 12557 26267 48645 60997 77047 91730 103462 117580 129470 145975 160670 185985 199220 213447 228725 250610 270005 283037 292752 309990 4276).? Using the instructions at http://staffwww.dcs.shef.ac.uk/people/D.Abbott/Library/freedb.howto1.06.txt I tried using the Get method of Indy's TIdHTTP component to go?retrieve the album info, but I just get error messages (usually 500 Command syntax error: incorrect number of arguments). ?
Could some kind person please give me a successful example of using TIdHttp.get?(or the equivalent in Synapse) with freedb.org?? Are there Properties I need to set? ?
Thank you.
?
A. G.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130610/ca5c3907/attachment.html>

Reply by email

Antonio Fortuny
to Alejandro Gonzalo

Le 10/06/2013 21:49, Alejandro Gonzalo a ?crit :

Show quoted text 16 lines
Using fpc's cddb unit I was able to form the freedb query string from the CD in my drive (for "The Great Bluesmen" it was : 2b10b215 21 150 12557 26267 48645 60997 77047 91730 103462 117580 129470 145975 160670 185985 199220 213447 228725 250610 270005 283037 292752 309990 4276). Using the instructions at http://staffwww.dcs.shef.ac.uk/people/D.Abbott/Library/freedb.howto1.06.txt I tried using the Get method of Indy's TIdHTTP component to go retrieve the album info, but I just get error messages (usually 500 Command syntax error: incorrect number of arguments). Could some kind person please give me a successful example of using TIdHttp.get (or the equivalent in Synapse) with freedb.org? Are there Properties I need to set? Thank you. A. G.
I've read in the howto that the GET is not supported and POST bust be
used instead. After having quickly read the text it seems that the
request is adressed to a form using fields descriptors. This meand that
the header must be filled in as the URL requests it. Y guess you shoud
use something like
var
   data: TIdMultiPartFormDataStream;
   ResponseStream: TStringStream;
   Reponse: String;
   IdIntercept: TIdConnectionIntercept;   // might not be needed
begin
   ... some initialization code
   IdIntercept := TIdConnectionIntercept.Create(nil);   // might not be
needed
   data := TIdMultiPartFormDataStream.Create;
   with TIdHTTP.Create(nil) do try
      // use a timeout to get control back if URL does not answer
       ConnectTimeout := 20000;
      // might not be needed but usefull to trace what happens
       IdIntercept.OnConnect := @HttpInterceptConnect;
       IdIntercept.OnDisconnect := @HttpInterceptDisconnect;
       IdIntercept.OnReceive := @HttpInterceptReceive;    //  <--- this
one could be important to use
       IdIntercept.OnSend := @HttpInterceptSend;
       // you maight use these event if you want to inform the use on
how things are going on
       OnStatus := IdHTTPSStatus;
       OnWork := IdHTTPSWork;
       OnWorkBegin := IdHTTPSWorkBegin;
       OnWorkEnd := IdHTTPSWorkEnd;
       Request.ContentLength := -1;
       Request.ContentRangeEnd := 0;
       Request.ContentRangeStart := 0;
       Request.Accept := 'text/html, */*';
       Request.BasicAuthentication := False;
       Request.UserAgent := 'Some identification(compatible; Indy Library)';
       Request.Username := 'some_uer_if_needed';
       Request.Password := 'user_password?';
       HTTPOptions := [hoForceEncodeParams];
       Request.ContentType := 'application/x-www-form-urlencoded';
       data.AddFormField('no_client', AClient);
       ... as many fields as needed
       Request.ContentLength := data.size;
       ResponseStream.Position := 0;
       Request.ContentLength := data.size;
       Post(HTTPPostServer, data, ResponseStream);
       ResponseStream.Position := 0;
       Reponse := ResponseStream.DataString;
   finally
     Free;
     data.Free;
     IdIntercept .Free
   end
Show quoted text 5 lines
-- _______________________________________________ Lazarus mailing list http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130611/f64d76cc/attachment-0001.html>

Reply by email