Бывалый

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.9.2004
Репутация: нет Всего: 1
|
Помогите допилить!!! Нашел вот пример: Авторизация и аутентификация на сайтах, через WinInetСделал так сказать по подобию, но наткнулся на грабли: 1. Не понимаю как нужно открывать файл, ибо если паскалевским методом (закоментировано), то вставляется 5 первых символов, я так понимаю это заголовок JPG файла, а дальше никак, типа конец файла и все тут... пока обошел это так:Открываю файл блокнотом, копирую в мемо и из мемо подставляю в запрос. 2.Запрос проходит но как-то криво... и картинка не появляется на сайте, пишет -ОШИБКА, выберете хотябы один файл. При этом запрос почти идентичен, тому что отправляет браузер, но кароче, а почему не понятно... Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, WinInet, StdCtrls,winsock;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; Memo2: TMemo; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
function GetHostName(url : string) : string; begin result := ''; if pos('https://',url) > 0 then begin delete(url,1,length('https://')); SetLength(url,pos('/',url) - 1); result := url; end else if pos('http://',url) > 0 then begin delete(url,1,length('http://')); SetLength(url,pos('/',url) - 1); result := url; end; end;
function GetScriptName( url,hostname : string) : string; begin result := ''; delete(url,1,pos(hostname,url) + length(hostname)); result := url; end;
procedure SetFlags(url : string; out Flags_connection,Flags_Request : Cardinal); begin //Оприделяем на https или http if pos('https',url) > 0 then begin Flags_connection := INTERNET_DEFAULT_HTTPS_PORT; Flags_Request := INTERNET_FLAG_RELOAD or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_SECURE or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_KEEP_CONNECTION; end else begin Flags_connection := INTERNET_DEFAULT_HTTP_PORT; Flags_Request := INTERNET_FLAG_RELOAD or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_KEEP_CONNECTION; end; end;
function DataAvailable(hRequest: pointer; out Size : cardinal): boolean; begin result := wininet.InternetQueryDataAvailable(hRequest, Size, 0, 0); end;
function GETURL2HTML(url : string;param : Ansistring ;method : string) : AnsiSTRING;//Получение страницы по url var FHost,FScript : string; hInternet,hConnect,hRequest : Pointer; dwBytesRead,I,L : Cardinal; Flags_connection,Flags_Request : Cardinal; Type_Acess : string; begin result := '';
Type_Acess := 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryuDo5SA2hdTeNDslg' + #13#10 + 'Content-Length:'+inttostr(length(param));//+#13#10+ //'------WebKitFormBoundaryuDo5SA2hdTeNDslg'+#13#10+ //'Content-Disposition: form-data; name="image1"; filename="Folder.jpg"'+#13#10+ //'Content-Type: image/jpeg'; fHost := GetHostName(url); fScript := GetScriptName(url,fHost);
//Устанавливаем флаги SetFlags(url,Flags_connection,Flags_Request); //Инициализируем WinInet hInternet := InternetOpen(PChar('Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4'),INTERNET_OPEN_TYPE_PRECONFIG,Nil,Nil,0); if Assigned(hInternet) then begin //Открываем сессию hConnect := InternetConnect(hInternet,PChar(FHost),Flags_connection,nil,nil,INTERNET_SERVICE_HTTP,0,1); if Assigned(hConnect) then begin //Формируем запрос hRequest := HttpOpenRequest(hConnect,PChar(uppercase(method)),PChar(fScript),HTTP_VERSION,nil,Nil,Flags_Request,1); if Assigned(hRequest) then begin //Отправляем запрос I := 1; if HttpSendRequest(hRequest,PChar(Type_Acess),length(Type_Acess),PChar(param),length(param)) then begin repeat DataAvailable(hRequest, L);//Получаем кол-во принимаемых данных if L = 0 then break; SetLength(result,L + I); if InternetReadFile(hRequest,@result[I],sizeof(L),dwBytesRead) then//Получаем данные с сервера else break;
inc(I,dwBytesRead); until dwBytesRead = 0; result[I] := #0; end; end; InternetCloseHandle(hRequest); end; InternetCloseHandle(hConnect); end; InternetCloseHandle(hInternet); end; procedure TForm1.Button1Click(Sender: TObject); var param:ANSIstring; file1:TextFile; s:string; begin {param:=''; AssignFile(file1, Edit2.Text); Reset(file1); //repeat ReadLn(file1, s); param:=param+s; //until not eof(file1); Memo1.Text:=param; //Memo1.Lines.LoadFromFile(Edit2.Text); }
Memo2.Text:=GETURL2HTML(Edit1.Text,Memo1.Text,'POST');
end;
end.
|
Запрос от браузера: Код | POST http://imglink.ru/process.php HTTP/1.1 Host: imglink.ru Proxy-Connection: keep-alive User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Referer: http://imglink.ru/ Content-Length: 24365 Cache-Control: max-age=0 Origin: http://imglink.ru Content-Type: multipart/form-data; boundary=----WebKitFormBoundary9Bq3lkvyB8alqWO4 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 Cookie: PHPSESSID=1e4640bd9dff106bf17ddcf894d84ef0; __utmz=188829619.1278856285.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); imglink_img[87a0c9a34770be6b686a3bca57c863ce]=thumbnails%2F11-07-10%2Fe8f76e12c03f7589b1bb2ab7ef19e1a8.jpg; imglink_img[b2e58c0fefa03a64b99ef4673105fbfd]=thumbnails%2F11-07-10%2Ff4a3cc7909958c444caf0ada81c3cdaa.jpg; __utma=188829619.908507728.1278856285.1278856285.1278861406.2; __utmc=188829619; __utmb=188829619.3.10.1278861406
------WebKitFormBoundary9Bq3lkvyB8alqWO4 Content-Disposition: form-data; name="image1"; filename="Folder.jpg" Content-Type: image/jpeg
яШяа
|
Запрос от проги: Код | POST http://imglink.ru/process.php HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryuDo5SA2hdTeNDslg Content-Length: 5164 User-Agent: C:\Users\Zlo\Documents\RAD Studio\Projects\WinInet\Project2.exe Host: imglink.ru Proxy-Connection: Keep-Alive Pragma: no-cache Cookie: PHPSESSID=fc66602a115a110aac16c346371689e3
------WebKitFormBoundary9Bq3lkvyB8alqWO4 Content-Disposition: form-data; name="image1"; filename="Folder.jpg" Content-Type: image/jpeg
яШяа JFIF ` ` яЫ C
$.' ",#(7),01444'9=82<.342яЫ C
2!!22222222222222222222222222222222222222222222222222яА И И" яД
яД µ } !1AQa"q2Ѓ‘Ў#B±БRСр$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzѓ„…†‡€‰Љ’“”•–—™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪбвгдежзийкстуфхцчшщъяД
яД µ w !1AQaq"2ЃB‘Ў±Б #3RрbrС $4б%с&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ѓ„…†‡€‰Љ’“”•–—™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪвгдежзийктуфхцчшщъяЪ ? n)»j]”Ў3\fд[iШ©6С¶Ђ#Е.)шЈ МRb¤ЕвђИЉТm¦ЭЭ[ШЫґч2¬Q/VcXQшЫB‘}©”/vЊЊэ8¦“{ иn‘LЫTґЯiљјЌќАydЎOлZzPХЂЏbџЉ1@†ЃЕ`У±Љ(…Яі~tТНэгщУ€¤ЕKxюtЬ·чЏзN=i1љ.I=Й¤ПЦњE&)ЊJ)qF(ёўќЉ(KbџЉ\RМQЉ}†AьQЉ f(#Љ~)Иф&ђП5ХnД~:‹F–F[5”GЏ Й?Ќz=Ч…|/Ћ±%¬?6U~RN~µеє|"ЯвRЗu |Ь8f'Ь§їг^ЈvцРј0эљ6іV1”Г @Зlg=л<CіIv6ГЖйћ/v’h>$oІ9&ЭcЁя <WЇ©К)цЧ–xАD5{„ЮЁРбb‰GрћzЧyбџґ6‘ љv•Z0FеБSРЊчпНЙJ*3iшЈьb—"Ћ)§вђЉ a§‘I@ #ЉLSслIЉFi)дRbЖвЊS±F(ёўќE iвЊS±F*JўџE 3ё§bЊPqTх;Ѓi§Н;d*.IЅкц+Нь{®4чїЩP¶!‡\јЭ‡бькў№ќ„Э‘ЕЬґІj2fy7:dо>µмu¬Гбkgkhж№љєr0иqЬW“йчУiљ„7ђc|G 0И> ЧЁЫьAС®mQ®нд\…Ф°чБљЊTdнdi‡”UоП"Ф<УЁ\ ШґЎ€lћхл~‘Ґрэ°eГ*г#Ўп^U=Ъя В@чq)u7Ec#vqЉцШl …*ОУЫЪ¶©ІF+Y1qF)Ш¤¬Ж3NЕ!РHв“т)1@вђЊT”Т№4 МQJEЎ ГТ“ьQЉ`4 )ШўЂ51KЉZ*Jb”R *haуYЖмmRЯ•64/"§MЗс»]‚Е[»„ііћжO№?ЂНxdуЙsq$уЙ#cоkЧ|s?Ш<5z›†з"~§џРт¶ље%XTіG‘Ѕ”u5СE§dgS{ЪбA=Н3нGЫъХz+{#;“,нй4+Ў §ЬW»iwй©йvч©Ђ&@ДЗёьу^^ЈрЪоi4‹‹gFтг“(э№к?ЇгYХZ\Ё=NМЉLSИ¤®sV4ЉLTЦр›‹€вДШ©/ ЋTВKC"оBZНХЉЁ©хЧхи>Wk•1IТќF+RFRN¤"ЂiґуIЉ Е©ж¶–Э”L… .бћвўЕ’’ј]РЪ°Ъ)ШўќДjРsх8ҐЕ:!ыФя xVrvM”‚XМRґdЊ©ЗМTчџсы7ыХ M9SЊћн/ИmYґYія Y/јmPАЪ"я x:X%0LІ :ѓЬTл5ґmжG пЂМ0 sФSЊҐhЯ™~:”¬ТЧcЃшЁfы-ёD&#pЕШtФюU‡рым\к·}ўж-€B;Ђчи ф‹ы8u;In“МЉQ†щэk‹С~y:гЅЮЎ$QDБљ ?|“Ыќл¶ B’‹{ё№OC‘У<=ioiЄkЌ(Іі›мл 'q/?(=Ђ$ФуxbчKљ[;K6ъ2<ёZS:L зж #v_t»/ щЂ†=NYќ“ТE\йИ#сЇ.XЩХ™QЉ Л8Z(~щєЋOGmфУЛППѕ„Mr{¶ – u<WРV–Йie јjc@ a_?Д3* …Л“Ъѕ† 9ЋЈЅm[ ©ЌпE\ѓюA·џTюuOµrB§3’мнш'ъ›5ktшюIзЮЁBмFsЃ“я ЦН:X3¦cМЋFЃІ66p§я ЇTЪv6лC㹤Љv‡~РuЪАчП*ќDхєУЙiїљїЮR’µ€iQwє®qёЃA§Cюѕ?ч‡у®№;&f·$ѕІk+ѓ;”тлLёѓЙHNмщ‰ї§NkFb.®.lЫпщЊР“ШчЌTФXмБк!МЧ у—$gї_=.џхФТQJнj{(ч±Ј}Моcм95\і№[KyеV_=°€ПНtЧrTЪ†пOїь€ЌЇ©-Мя Ъ2L~ь2“я nџfVќ¶ўdv†дЖ°ИҐX€АЗЎаzЦojП Sж¦Х’Х|юо·ЪzЬiйEЉк Ц§! кOb 0ТФµua–е{I¦i L фUfЫёнОЮЩлMўІҐISVMШ§+‹E&hНl!j†µtЦ5ЭЪFdxc.Є=GzЅљЕсqcб=OaБтOя ^„®мДфZр—ЉДљ 7PF\к@dАъъW9г{+€фг§иђEmm у'¶¶„)Ч=[µs~ЦGІХо3CHег'pQьл¦Чж‚юЬ2Lк›XоaЈ ч\c¶~S\УўЎ_™-/э}ЗDZќ=w<›iVБЖ {ц— ЦЪE¤ 4q*±^„Ѓ^tіC{*ЬУ#ќдњдзћ{ЧЅYЭ-еЊ(0ІЖ®¦FkРІ8йоНьKo>©ьк–h$ъх¦“\ђ‡+“опш%ъ·°¦’“4Рђ&…}’+zi№¤&†®¬іОeєyЖPіn=*KЫЦЅ‘ђ)UЪqЯЮЄ“IєіцPN.ЪЉжz…! ћ)№ЕjH¤жЋ”ЬТ“Е )№ўЂ63IљJ(мЉ°ђ/–ІK(Ќ[ос’j°лVЈљ…aќ[ ќ®ЅF}« оi.Oќ··•КЌє‘MЊЌІ,ЂЊ‚*<љљxA\<oч[ЁjйIJ §pjМ\Х=RЯнљUЭ°л,.ЈкEj•ЉЦ4Я’W°ДбGjl©¶жxWaR¦sЊф"іX„ЪvvnЧюµ)уЊіЫЪЬЫЖыcёeкИэEY‹^ѕ†КD‘Dp‰2 ќ®>eзЁпхҐс%џц€пнqЂ“їCИэ eW§dОnf‰mgЅ№K{hћiњб#A’ЗШWіxIшKNЯњ€ИзЩ€Ї:шyя #ц‘я ]Џю‚kУtXM®…gu€gсзъЧ=JЌФtы$юыя ‘pZ\С‘7ЪкUЅ¦Vхcя )?Э_эUЧ=є”г7Х&k%fРвqW!№3H‘GenМx)зхЄХтNџmґф™—џъfџвj1i-ЫЫъм‡Жj2@g 0Yж©“L'лHMkNО*7Ѕ‰“»ёвM4љnкµaw з°ЖҐд#®?эtTљ„\џA%wb¶i¤Ф·°K№`';ѓк;~•iЖJQR[0jЪЭFкfhНP‡nў™љ(n–™љ3@Ръ°’[ХeG ?‰_Ё5W4fўpSVїЬ4мYћetHгB±¦q“’IпPЋ”МСљ!К†ЭЛ·А±Ћaчё"’?ЭйУіp$*Яљ†+©aRЁЯ)к¤?ZlУЛ;##§µsFЌK*nЬ©zиоґ·кUЦз‘|LµшЉ;Ђ0'„}Hгь+‹ЇGш©енТя з§п9цщkО+Ц¦пrЛs[Г:љиЮ%УхRЙБҐzРљч¶УЧ~RxEїgЮУ|еn3sхp?ZчІШх®\M&ж§gkR––dчч q{$©ч Вэ ЕU-McLЭQ(EEl‹nодЃ°sVО±я ?Oщ𪩤ҝ(OгЉ~ЁJMlXёјћй”П!rјj ФНФ›ЄЈЕZ*ИoV<µjЫ[я Д™я }Orг™nU}?Е&¦ёєyЦ%`Є±&Е йYV§*–QvЦя wь--НZц{[Ђй!ЫеHИr2Ѕ9ъVNjD»uґ’Ч QШ6OPGҐAљt!*qе—MЅ?M7qщЈuGєЌХ№#ЙўЈ&Љ ЭЭKє”GKељ,wQєџеQеСaЬfпj7“Л G@\Њ’i2jo,Х–‰ІС¶ЌЮiпЊVsџ-јЭ†Џш‡xч>$6дь–С…ЬЂЗщЏК№ н<^Йq§Muе§ЪґСп’ЄЉ НquЧF|СфУо0–еќ9 є•І*ЏЦЅНЙЇрґ>‰ффя ¦Ўї!џй^К⦶иЁlBO4УJx¦“X–&}h&ђћi ТRn¦о§`xЈ4Вi3EЂu!¦о¤-M вh¦Qљ }h GeдТ€ЄаJ<є *yX«’Ck‰Z;ђ1`д}©<јХЙћ_)—nРЂX W%ЕJ<оЛ^¶*=LЫ‹A ЕAЬ¤§ФЏЙцќІHњЄЁP}qQyuµgN.{ШOr§•SЖ€цЖ !ЅX‚GЎ©<є‚хЕµЌДнАЋ6b~‚ЄҐ55mЃ; вKл?±Е§YЬэ«mМ·3LЄ–| «ћxЇЅsT¤ж’є©УPЌ‘‹w:_Gжx¶Ья qїсТ?zМЉY¶ЁЙ' хжЯ `у5ы‰qДvзџ©кЦ §Эµ¶Ѕґгх®|Tщ#)цW4¦®S—K№Pш14€2С,Ђ°JН&iІHukS;МЈх<Ф;>Х7—ч7ќїLсXSsSp›ѕ—/ҐИ‰ҐF_1<МмИЭЏJLЪћ±лї!sЙq[5 Ќ{цє„JС[ЫЛ§¶Dl‘‚ vдrЦ°ОkrК+{ ѓp—Юd[Hт‚0gИиAпY‚ЩЏjеВ.Tв–љkfЇкџ^пМr+sSЙg2\G Жй•БгжйR‹F[›bu;6ЗHбюBµ©7$»?ВВHА–†g‰ѕт§ў›°ЦНе©kыѓЋІ7уЁЕџµiMуA6 ЛJ_(ъV°ґ>”бgмjДdy'ТЉЪgТЉ к6Rм«]]XЉы(ЩнVvQ°Pm”»*ЖБFК ЇІ±|\юG„5ikgЗх®‡esЫЙр®Гјjї›ЁюґР3жъ(ў¶2;Џкй¶·т1i (Ая кЇn®зYc&2TЋµжЪЅЛЮ‡…”рG–МЫЋ•мюУЕНѕя "HКњкF~™®jЉт±ґ~’¤у°icќЖdL1хц…WM?ШЧLљjЃНH,PvиЖџВ¬ ЬзЗЪҐ[, t"СaKцd…i`0E“zT‚ИъVЯ’ґyCТЋP1ЕќX1;И’67 qйТґ<ЎйG—IУ‹Х…ЩћЦюcі·V94ўФ їІЌ”ФRV@Qы0§}њUЅ‚—`§a<ЃйE[ЫEGb—9нE0¶”Їґб@ ЫFЪw4P6Цv»¤БhЧ:}МFHе_єЇ дr=АJ(АҐшy)ю”чvЧ%а_o'nаЋjќ·Гл›нZ {6a6$i°6Њg·ZчлН.ЛPek«uvOєЩ*ГсХ8|=ҐЫ]%Мp1љ3”v•›iьMgыОkЯCOЭтЪЪ”ґ_ Xи¶i H QЙх5ІЄЈўсRi:U™ЌЕҐў #4›iш¤ ‘IЉu% &)§QЊР¤Е8ТPb”ЉJ\жЂPh ФґQ@¤ўЉ uQE ґQ@ ~‚zQE &)¦Љ(JJ( в’Љ((ўЉ J(ўЂЉCE NфQ@ hўЉяЩ
|
П.С. Пример от JnK, почему-то не работает, он просто даже не пытается что либо послать. И еще не вкурил Код | ParamList - список переменных и значений (1. строка передменная, 2. данные)
|
строка предметная еще как-то понял, но что за данные??? Вобщем Хелп пожалуйста!!!
|