[fpc-pascal] Cannot reuse TFPHTTPClient object for 2 different POST requests

leledumbo leledumbo_cool at yahoo.co.id
Fri Jan 16 18:57:44 CET 2015


Consider the following program (it's a real program with real parameters,
nothing hidden, so you can really just try it out because the target server
is public):

{$mode objfpc}{$H+}

uses
  fphttpclient;

var
  HTTP: TFPHTTPClient;
begin
  HTTP := TFPHTTPClient.Create(nil);
  
  WriteLn('Response 1:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/price',
     
'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d&from=BOO10000&thru=AMI10000&weight=1'
    )
  );
  
  WriteLn('Response 2:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/price',
     
'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d&from=BDO10000&thru=AMI10000&weight=1'
    )
  );

  WriteLn('Response 3:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/origin/key/BANDUNG',
      'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d'
    )
  );
  
  HTTP.Free;
end.

In above program, Response 3 will stuck in infinite loop. Similarly, if we
move Response 3 up as the first request and then copy-paste-d:

{$mode objfpc}{$H+}

uses
  fphttpclient;

var
  HTTP: TFPHTTPClient;
begin
  HTTP := TFPHTTPClient.Create(nil);
  
  WriteLn('Response 1:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/origin/key/BANDUNG',
      'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d'
    )
  );
  
  WriteLn('Response 2:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/origin/key/BOGOR',
      'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d'
    )
  );
  
  WriteLn('Response 3:');
  WriteLn(
    HTTP.FormPost(
      'http://api.jne.co.id:8889/tracing/sirclo/price',
     
'username=SIRCLO&api_key=4fd0e22535c32eb9e5496c311190760d&from=BOO10000&thru=AMI10000&weight=1'
    )
  );

  HTTP.Free;
end.

the new Response 3 will result in empty string. As can be seen, the request
starts failing (either stuck or empty string) when the URL is changed.
Change in FormData is OK as demonstrated above.



--
View this message in context: http://free-pascal-general.1045716.n5.nabble.com/Cannot-reuse-TFPHTTPClient-object-for-2-different-POST-requests-tp5720779.html
Sent from the Free Pascal - General mailing list archive at Nabble.com.



More information about the fpc-pascal mailing list