Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function send(method,zap,cooc,params,ref,mime,proxyTYPE,proxy,port,proxyUSER,proxyPASS:string;headerS:array of string):string;
- var Header : TStringList;
- Contents : TStringList;
- httpsend: THTTPSend;
- ss: TStringStream;
- i,k,n:integer;
- rev,coocX:string;
- begin
- Header := TStringList.Create; // создание заголовка
- Contents := TStringList.Create;
- httpsend:=THTTPSend.Create;
- HTTPsend.UserAgent:='Opera 9.0'; // прописываем user-agent для заголовка
- httpsend.Headers.Insert(0,'Referer: '+ref); // добавляем в хедер referer
- httpsend.Cookies.Text:=cooc; // устанавливаем куки
- httpsend.MimeType:=mime;
- for i:=1 to 100 do begin // добавляем в хедер данные
- if trim(headers[i])<>''then // добавляем в хедер данные
- Header.Add(headers[i]) // добавляем в хедер данные
- else break; // добавляем в хедер данные
- end; // добавляем в хедер данные
- httpsend.Headers.AddStrings(Header); // вставляем из stringlist в httpsens хедер
- {Далее установка прокси}
- if proxyTYPE='HTTP' then begin
- httpsend.ProxyHost:=proxy; // установка ip прокси
- httpsend.ProxyPort:=port; // установка порта прокси
- end else if proxyTYPE='SOCKS 4' then begin
- HTTPsend.Sock.SocksIP := proxy; // установка ip прокси
- HTTPsend.Sock.SocksPort := PORT; // установка порта прокси
- HTTPsend.Sock.SocksUsername := proxyUSER; // установка логина прокси
- HTTPsend.Sock.SocksPassword := proxyPASS; // установка пароля прокси
- end else if proxyTYPE='SOCKS 5' then begin
- HTTPsend.Sock.SocksIP := proxy; // установка ip прокси
- HTTPsend.Sock.SocksPort := PORT; // установка порта прокси
- HTTPsend.Sock.SocksUsername := proxyUSER; // установка логина прокси
- HTTPsend.Sock.SocksPassword := proxyPASS; // установка пароля прокси
- end;
- if method='GET' then begin // если запрос GET
- httpsend.HTTPMethod('GET',zap ); // Делаем запрос GET
- end;
- if method='POST' then begin // если запрос POST
- ss.WriteString(params); // добавляем параметры POST запроса
- httpsend.HTTPMethod('POST',zap); // Делаем POST запроса
- end;
- Contents.LoadFromStream(httpsend.Document); // Загружаем контент в Contents
- rev := Contents.Text;
- {обработка кодов ответа сервера}
- case HTTPsend.Resultcode of
- 301, 302, 307:
- begin
- n := FoundLocationStrNum(HTTPsend.Headers);
- if (n >= 0) and (n <= HTTPsend.Headers.count) then // если в хэдере найдена строка с локейшеном
- locat := StringReplace(HTTPsend.Headers.Strings[n],'Location: ','',[]);
- end;
- end;
- if pos('302',IntToStr(HTTPsend.ResultCode))<>0 then begin
- result:='302';
- end else if pos('500',IntToStr(HTTPsend.ResultCode))<>0 then begin
- result:='500';
- end else if pos('404',IntToStr(HTTPsend.ResultCode))<>0 then begin
- result:='404';
- end else if pos('400',IntToStr(HTTPsend.ResultCode))<>0 then begin
- result:='error 400';
- end else
- result:=rev;
- httpsend.Free; // освобождение памяти
- header.Free; // освобождение памяти
- contents.Free; // освобождение памяти
- exit;
- end;
Add Comment
Please, Sign In to add comment