Не могу понять по чему обрезается post запрос. В начале на несколько байт и в конце на 1. delphi 2009. Code: procedure TForm1.Button1Click(Sender: TObject); const HTTPAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022)'; FlexEngine = 'http://127.0.0.1; FlexContent = #$00#$03#$00#$00#$00#$01#$00#$0D#$75#$73#$65#$72#$2E#$73#$65#$6E#$64#$47#$69#$66#$74#$00#$02#$2F#$31#$00#$00#$00#$A2#$0A#$00#$00#$00#$01#$11#$0A#$0B#$01#$15#$66#$72#$69#$65#$6E#$64#$5F#$75#$69#$64#$06#$0F#$35#$35#$30#$34#$33#$38#$38#$03#$6B#$06#$41#$30#$64#$30#$62#$39#$37#$66#$32#$62#$61#$34#$38#$35#$37#$38#$30#$65#$35#$33#$31#$37#$33#$32#$30#$39#$33#$32#$36#$31#$34#$39#$36#$03#$74#$06#$15#$31#$32#$34#$39#$39#$31#$34#$32#$37#$39#$0F#$67#$69#$66#$74#$5F#$69#$64#$06#$11#$31#$39#$36#$39#$31#$30#$31#$35#$11#$61#$75#$74#$68#$63#$6F#$64#$65#$06#$11#$35#$31#$35#$31#$38#$37#$34#$30#$0F#$6D#$65#$73#$73#$61#$67#$65#$06#$01#$03#$6C#$06#$05#$72#$75#$13#$73#$65#$6E#$64#$5F#$74#$79#$70#$65#$04#$01#$0F#$66#$61#$72#$6D#$75#$69#$64#$06#$0F#$38#$38#$32#$32#$35#$32#$39#$01#$00; ContentType = 'application/x-amf'; var SL: TStringList; begin idHTTP1.ProxyParams.ProxyServer:='127.0.0.1'; idHTTP1.ProxyParams.ProxyPort:=8888; IdHTTP1.Request.UserAgent := HTTPAgent; SL := TStringList.Create; SL.Add(FlexContent); IdHTTP1.Request.ContentType := ContentType; try Showmessage(IdHTTP1.Post(FlexEngine, SL)); finally SL.Free; end; //Memo1.Text := t.DataString; end;
1.пользуй теги Code: [/cоde] 2. с чего взял что обрезается - чем докажешь? логи с локального сниффера с студию. nirsoft.net - там SmartSniff и SocketSniff. Можешь ими посмотреть то, какие на самом деле шлются и принимаются запросы. И показать нам.
Я принимал запросы чарльзом через виртуальный прокси сервер. То есть я словил запрос этим же чарльзом и вставил в код (FlexContent). Потом посмотрел опять через чарльз запрос не такой. Обрезан с начала и с конца. Завтра лог скину. #$00 вроде их то и обрезает...
Тут можно придумывать массу вариантов.. Но если ты будешь в главном потоке проверять пришол ли ответ, то вся форма будет висеть. Создай лучше новый поток, сразу после создания потока GetData,в котором ты будешь ожидать пока не придет пакет. Можешь даже заюзать TEvent события для ожидания пока завершится поток (event.waitfor(infinite); )
вконце функции потока ставь ExitThread(0) типа Code: DWORD _stdcall ThreadProc(void * p) { ............ ExitThread(0); return 0; } Или на Delphi Code: function ThreadProc(p:pointer):DWORD; stdcall; begin ............. ExitThread(0); result := 0; end;
Может ты не правильно создаеш? или недоконца доходит функция завершения. когда создаеш поток то не забывай закрывать дискриптор
Вот: Code: procedure Getdata; var len:integer; ret:string; begin form1.Memo2.Lines.Add(inttostr(random(111))); ExitThread(0); end; procedure TForm1.Button8Click(Sender: TObject); var thId:cardinal; i : Integer; begin For i := 1 to 100 do begin CreateThread(0,0,@Getdata,nil,0,thid); end; end; procedure TForm1.FormCreate(Sender: TObject); var ws:TWSAData; begin WsaStartup($202,ws); application.Title:='HTTP Sender'; end; Это из HTTP Sender, но при попытки снова создать потоки получаем ошибку, я не думаю что здесь не доходит до: ExitThread(0);
Глюк при чтении файла... Текстовые файлы читает наура, а вот двоичные (картинки, архивы и т.п.) только первые 5-10 байт. Где косяк? Code: Function GetBuff(szFile: PChar): PChar; Var hFile, dwSize, dwBytes: DWORD; Begin Result:=''; hFile:=CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0); If hFile<>INVALID_HANDLE_VALUE then Begin dwSize:=GetFileSize(hFile, nil); Result:=VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE); ReadFile(hFile, Result^, dwSize, dwBytes, nil); End; CloseHandle(hFile); End;
Здраствуйте...хелп плз мне нужно через делфи заполнить форму... http://217.197.113.50/titan/index.php капчу вывести в программу и через Тедит.... вот то что я делаю PHP: procedure TForm1.Button1Click(Sender: TObject); //тут я отправляю данные var Http : TidHttp; CM : TidCookieManager; Data : TStringList; Strpage :string; UserID, UserName : String; i : integer; begin try Http := TIdHTTP.Create(Self); Data := TStringList.Create; CM := TidCookieManager.Create(Http); Http.AllowCookies := true; Http.CookieManager := CM; Http.HandleRedirects := true; Http.Request.Host:='217.197.113.50'; Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3'; Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; Http.Request.Referer:='http://217.197.113.50/titan/'; Data.Add('char='+Edit1.Text); Data.Add('keystring='+Edit2.Text); StrPage := Http.Post('http://217.197.113.50/titan/index.php', Data); finally Data.Free; CM.Free; Http.Free; end; Showmessage(StrPage); end; procedure TForm1.Button2Click(Sender: TObject); //тут я получаю картинку капчи begin Form1.WebBrowser1.Navigate('http://217.197.113.50/titan/titcaptha/index.php'); end; когда всё ввожу получаю ответ 'Ошибка: Неверно введен код с картинки.'
Чтоб картинку получить - нужно наверное какие-то параметры передавать (из кукисов или еще откуда-то)? Имхо - дай нормальную ссылку на форму, а не айпи... очень похоже что сплойт тестишь
всмысле дай норм ссылку - это и есть ссылка! это не сплойт) это для того чтобы бонусы с ла2топа получать http://217.197.113.50/titan/index.php - форма получения бонуса
нормального домена нету....есть главная страница сервера Http://la2titan.ru а вот - http://la2titan.ru/sections/view/25 - там про получение бонуса! но там ссылка на то что я написал!
S[N]EP,попробуй картинку получать через того же индейца, которым ты отправляешь свой пост. Сохрани ее в поток и выведи в TImage. И посмотри какие может номера сессии браузер еще передает, когда капчу запрашивает