![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |
|
#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 просмотров) Не могу скачать . Заранее спасибо. |