synopse / mORMot

Synopse mORMot 1 ORM/SOA/MVC framework - Please upgrade to mORMot 2 !
https://synopse.info
785 stars 323 forks source link

HttpGet: outStatus parameter is invalid #440

Closed ysair closed 1 year ago

ysair commented 1 year ago

call HttpGet('http://.....', nil, false, @status);

function HttpGet(const aURI: SockString; const inHeaders: SockString;
  outHeaders: PSockString; forceNotSocket: boolean; outStatus: PInteger): SockString;
...
      result := HttpGet(URI.Server,URI.Port,URI.Address,inHeaders,outHeaders,URI.Layer) else  //lose outStatus
...

fix:

function HttpGet(const server, port: SockString; const url: SockString;
  const inHeaders: SockString; outHeaders: PSockString=nil;
  aLayer: TCrtSocketLayer = cslTCP; outStatus: PInteger=nil): SockString; overload;

...

implementation

...

function HttpGet(const server, port: SockString; const url: SockString;
  const inHeaders: SockString; outHeaders: PSockString;
  aLayer: TCrtSocketLayer; outStatus: PInteger): SockString;
var Http: THttpClientSocket;
    status : Integer;
begin
  result := '';
  Http := OpenHttp(server,port,false,aLayer);
  if Http<>nil then
  try
    status  :=  Http.Get(url,0,inHeaders);
    if outStatus <> nil then
      outStatus^  :=  status;
    if status in [STATUS_SUCCESS..STATUS_PARTIALCONTENT] then begin
      result := Http.Content;
      if outHeaders<>nil then
        outHeaders^ := Http.HeaderGetText;
    end;
  finally
    Http.Free;
  end;
end;

function HttpGet(const aURI: SockString; const inHeaders: SockString;
  outHeaders: PSockString; forceNotSocket: boolean; outStatus: PInteger): SockString;
...
      result := HttpGet(URI.Server,URI.Port,URI.Address,inHeaders,outHeaders,URI.Layer, outStatus) else
...