|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
все равно я безпонятие как делать, т.к. с этими запросами только начал работать
|
#17
|
||||
|
||||
friz, спасибо!
1. Можете найти "HTTP Analyzer V5" или любой другой снифер. 2. Ползем на сайт, заполняем форму "Загрузите картинку" тобишь указываем картинку и если надо то теги и кликаем кнопку "Загрузить". 3. Смотрим какие действия и на какие адреса браузер шлет запросы нас интересует "Post" 4. Реализуем если нужно отправить только текст то можно использовать TStringList, а для отправки файла(ов) TIdMultiPartFormDataStream в uses нужно добавить IdMultipartFormData; пример для TStringList: Код:
var SL: TStringList; Otvet: String; begin SL:= TStringList.Create; SL.Add('number=' +edit1.text); { Заполняем: 1. "number" название поля 2. "=" это разделитель названия поля и его значения при использовании TStringList он обязателен 3. в edit1.text будет значение поля } SL.Add('massage=' +edit2.text); SL.Add('value=Загрузить'); //значение в кавычки брать не надо Вот так не верно bas.Add('value="Загрузить"'); Otvet:= IdHTTP1.Post('http://delphisources.ru/', SL); SL.Free; end; пример для TIdMultiPartFormDataStream: Код:
var MD: TIdMultiPartFormDataStream; Otvet: String; begin MD:= TIdMultiPartFormDataStream.Create; MD.AddFormField('text', edit1.text); { Заполняем: 1. "text" название поля 2. "=" не надо 3. в edit1.text будет значение поля } MD.AddFile('uploadfile', edit2.text, ''); { Заполняем: 1. "uploadfile" название поля 2. "=" не надо 3. в edit2.text будет значение поля тобишь адрес файла "C:\My.jpg" 4. '' оставляем пустым само заполнится или задаем принудительно к примеру "multipart/form-data" } MD.AddFormField('value', 'Загрузить'); //про кавычки написано выше Otvet:= IdHTTP1.Post('http://delphisources.ru/', MD); MD.Free; end; 5. Возможно перенаправление на другой адрес обрабатывать ручную или сделать так idHTTP1.HandleRedirects:= true; Последний раз редактировалось pesi, 09.08.2010 в 11:56. |
#18
|
||||
|
||||
вот пример того, как залить картинку на хостер... смотри вложение
данный пример только "заливает" картинку, твое задание, из полученного ответа "выдрать" нужную инфу |
#19
|
|||
|
|||
RusMaXXX , спасибо.
Но у меня не получаеться найти текст под тегами, я пробовал парсить, то ничего не выходило то какие иероглефы функцией Код:
function Pars(T_, ForS, _T: string): string; var a, b: integer; begin Result := ''; if (T_ = '') or (ForS = '') or (_T = '') then Exit; a := Pos(T_, ForS); if a = 0 then Exit else a := a + Length(T_); ForS := Copy(ForS, a, Length(ForS) - a + 1); b := Pos(_T, ForS); if b > 0 then Result := Copy(ForS, 1, b - 1); end; Как вытащить тогда ссылку под тегами? желательно на прямую, а не из мемо(как в исходнике) |
#20
|
||||
|
||||
hugolom тебе нужна прямая ссылка на картинку, без всяких там превью и т.п.? если да, то вот пример, смотри вложение
|
#21
|
|||
|
|||
Да, все работает, но я решил переделать на radikal.ru,
Код:
begin FormData := TIdMultiPartFormDataStream.Create; try FormData.AddFile('F', ed_file.Text, 'image/jpeg'); // я не понял откуда 'mage/jpeg в вас еще IdHTTP.HandleRedirects := True; Response := idHTTP.Post('http://www.radikal.ru/action.aspx', FormData); S := pos('[IMG]''', Response) + Length('[IMG]''');; E := pos('''[/IMG]', Response); link := Copy (Response, S, E - S); ed_link.Text := link; чувстую опять проблема с парсингом ? |
#22
|
||||
|
||||
вот рабочий пример, в результате, получаешь ссылку на картинку (но без BBCode, чисто ссылка)
в след. раз, мозгуй сам... за основу бери эти коды + снифер, и в путь ))) |
#23
|
|||
|
|||
Привет, пытаюсь загрузить картинку в группу вконтакте.
Пройдясь снифером определил какие щапросы должны быть отправлены: 1. POST-запрос на один из серверов вконтакте, для каждого альбома это один неизменный сервер. 2. После POST-запроса идет редирект на сгенерированный URL вида Код:
http://vkontakte.ru/photos.php?act=done_add&mid=28229780&aid=114626128&gid=11271478&server=4435&photos=e7f30c8480:x&hash=47a9b92a543a013f0b35d477464c6af8 Код:
http://vkontakte.ru/photos.php?act=editphotos&id=114626128&oid=-11271478&u=1 IdHTTP1.HandleRedirects в true, хранение кукисов в IdHttp включено. Код:
procedure TForm1.Button1Click(Sender: TObject); var params:TStringList; data : TIdMultiPartFormDataStream; res,s,location,photos,hash:string; start,stop:integer; begin Params:=TstringList.Create; /////// АВТОРИЗАЙИЯ ///////////////// Params.Add('email=my_mail'); Params.Add('pass=my_pass); Params.Add('expire='); Params.Add('vk='); res:=idHttp1.Post('http://login.vk.com/?act=login', Params); Params.Clear; s:=Copy(res, Pos('value', res)+7, 56); Params.Add('s='+Copy(res, Pos('value', res)+7, 56)); Params.Add('op=slogin'); Params.Add('redirect=1'); Params.Add('expire=0'); Params.Add('to='); IdHTTP1.HandleRedirects:=true; res:=IdHttp1.Post('http://vkontakte.ru/login.php', Params); Params.Clear; /////// *КОНЕЦ* ///////////////// //////// ЗАГРУЗКА ИЗОБРАЖЕНИЯ ////////// data := TIdMultiPartFormDataStream.Create; data.AddFormField('act', 'do_add'); data.AddFormField('id', '114626128'); data.AddFormField('aid', '114626128'); data.AddFormField('gid', '11271478'); data.AddFormField('mid', '28229780'); data.AddFormField('hash', '4d14dca7d838103b8b674892215687f1'); data.AddFormField('vk', ''); data.AddFormField('rhash', '60b06e4bf7502e57c1c69fe004c0f8e6'); data.AddFile('file1','c:\5018_Aleksey_Kalugin_-_Pustie_zemli.jpg','image/jpeg'); IdHTTP1.HandleRedirects:=true; res:=IdHttp1.Post('http://cs4435.vkontakte.ru/upload.php', data); Memo1.Text:=res; //возвращаеться ~ вот такой код: И вот что еще я заметил, если сгенерированный URL подставить в адресную строку браузера, то картинка загружается в альбом. Я думаю ответ близок, помогите кому не лень. |
#24
|
||||
|
||||
Так кто мешает распарсить код и сделать пост с указанными параметрами на указанный урл?
З.Ы. погрызи инфо по Vkontakte API. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#25
|
|||
|
|||
DJ PhoeniX, меня тоже посещала такая идея, но такой запрос возвращает тоже самое, только с другим hash
На счет API посмотрю, спасибо |
#26
|
|||
|
|||
Проблема почти решена.
Я говорил, что если сгенерированный URL подставить в адресную строку браузера, то картинка загружается в альбом. Это и есть ключ к ответу) Просто подставить этот URL в WebBrowser1.Navigate() и вуаля. Только предварительно авторизоваться с этим браузером: Код:
WebBrowser1.Navigate('http://login.vk.com/?act=login&email=ваш_емэйл@yandex.ru&pass=ваш_пароль&expire=&vk='); Sleep(3000); WebBrowser1.Navigate(сгенерированный URL); Теперь надо получить исходный код отображаемой в браузере страницы, распарсить и получить ссылку на загруженую картинку. |
#27
|
|||
|
|||
Но я думаю есть возможность реализовать это без веббраузера. Если ко знает, пожалуйста, не поленитесь, помогите.
|
#28
|
|||
|
|||
Можете кто-то перезалить на какой-то файлообменник
[www.radikal.ru] send_img.rar (9.1 Кбайт, 11 просмотров) Не могу скачать . Заранее спасибо. |