Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function sslInet(Const AServer, AUrl, AData : AnsiString; blnSSL:Boolean = True): AnsiString;
- var
- aBuffer : Array[0..4096] of Char;
- Header : TStringStream;
- BufStream : TMemoryStream;
- sMethod : AnsiString;
- BytesRead : Cardinal;
- pSession : HINTERNET;
- pConnection : HINTERNET;
- pRequest : HINTERNET;
- begin
- Result := '';
- pSession := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
- if Assigned(pSession) then
- try
- case blnSSL of
- True : pConnection := InternetConnect(pSession, PChar(AServer), INTERNET_DEFAULT_HTTPS_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
- False : pConnection := InternetConnect(pSession, PChar(AServer), INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
- end;
- if Assigned(pConnection) then
- try
- if (AData = '') then
- sMethod := 'GET'
- else
- sMethod := 'POST';
- case blnSSL of
- True : pRequest := HTTPOpenRequest(pConnection, PChar(sMethod), PChar(AURL), nil, nil, nil, INTERNET_FLAG_SECURE or INTERNET_FLAG_KEEP_CONNECTION, 0);
- False : pRequest := HTTPOpenRequest(pConnection, PChar(sMethod), PChar(AURL), nil, nil, nil, INTERNET_SERVICE_HTTP, 0);
- end;
- if Assigned(pRequest) then
- try
- Header := TStringStream.Create('');
- with Header do
- begin
- WriteString('Host: ' + AServer + sLineBreak);
- WriteString('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'+SLineBreak);
- WriteString('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'+SLineBreak);
- WriteString('Accept-Language: en-us,en;q=0.5' + SLineBreak);
- WriteString('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'+SLineBreak);
- WriteString('Keep-Alive: 300'+ SLineBreak);
- WriteString('Connection: keep-alive'+ SlineBreak+SLineBreak);
- end;
- HttpAddRequestHeaders(pRequest, PChar(Header.DataString), Length(Header.DataString), HTTP_ADDREQ_FLAG_ADD);
- if HTTPSendRequest(pRequest, nil, 0, Pointer(AData), Length(AData)) then
- begin
- BufStream := TMemoryStream.Create;
- try
- while InternetReadFile(pRequest, @aBuffer, SizeOf(aBuffer), BytesRead) do
- begin
- if (BytesRead = 0) then Break;
- BufStream.Write(aBuffer, BytesRead);
- end;
- aBuffer[0] := #0;
- BufStream.Write(aBuffer, 1);
- Result := PChar(BufStream.Memory);
- finally
- FreeAndNil(BufStream);
- end;
- end;
- finally
- InternetCloseHandle(pRequest);
- FreeAndNil(Header);
- end;
- finally
- InternetCloseHandle(pConnection);
- end;
- finally
- InternetCloseHandle(pSession);
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement