Translate one PHP function to Delphi
$30-100 USD
Pago na entrega
I need the following PHP/CURL function translated into a Delphi/WinInet function. I'll pay $25, should be pretty easy for anyone familiar with WinInet.
Here's the working PHP/CURL function:
function SSLPost($url, $postData){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
curl_close($ch);
}
Here's what I've got so far in Delphi/WinInet (not working):
function SSLPost(url, postData: string): string;
var
hSession, hConnect, hRequest: HInternet;
Buffer: Array[0..Pred(1024)] of Byte;
BufferLength: DWORD;
stream: TStringStream;
AcceptType: LPStr;
domain, path, header: string;
begin
header:= 'Content-Type: application/x-www-form-urlencoded';
AcceptType := PChar('*/*');
stream:= [url removed, login to view]('');
try
hSession := InternetOpen('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)', PRE_CONFIG_INTERNET_ACCESS, nil,nil,0);
if assigned(hSession) then try
hConnect:= InternetConnect(hSession,PChar(domain),443,nil,nil,INTERNET_SERVICE_HTTP,0,0);
if assigned(hConnect) then try
hRequest:= HttpOpenRequest(hConnect,'POST',PChar(path),nil,nil,@AcceptType,INTERNET_FLAG_RELOAD,0);
HttpSendRequest(hRequest, pchar(header), length(header), pchar(postData), length(postData));
if assigned(hRequest) then try
if (extractHeaderCode(hRequest)=200) then begin
repeat
InternetReadFile(hRequest, @Buffer, 1024, BufferLength);
[url removed, login to view](Buffer, BufferLength);
until BufferLength = 0;
Result:= [url removed, login to view];
end;
finally InternetCloseHandle(hRequest); end
finally InternetCloseHandle(hConnect); end;
finally InternetCloseHandle(hSession); end;
finally [url removed, login to view]; end;
end;
TEST CASE:
==========
Here is the test case: (note: you'll have to replace [username] and [pass] with a real Google Adsense account login)
The returned result should be a comma-delimited table. If you get the login page back then the function is not following the login or cookies are not being delt with correctly.
url:
[url removed, login to view]
pageData:
destination=/adsense/report/aggregate?sortColumn=0&reverseSort=false&outputFormat=TSV_EXCEL&product=afc&dateRange.simpleDate=today&dateRange.dateRangeType=custom&dateRange.customDate.start.day=23&dateRange.customDate.start.month=8&dateRange.customDate.start.year=2006&dateRange.customDate.end.day=22&dateRange.customDate.end.month=9&dateRange.customDate.end.year=2006&unitPref=page&reportType=property&searchField=&groupByPref=date&username=[username]&password=[pass]&null=Login
That's it, I just need one procedure translated and I'm halfway there already.
ID do Projeto: #92119