![]() |
[Delphi] Winsock 2.0; multipart/form-data
пытался отправить граффити вконтакт по сокетам.. как составить правильно запрос?
вот пример запроса, который был переснят с ВК через CommView. Код:
varPHP код:
|
Если меня не изменяет память, то везде должно быть не
Код:
boundary + #13#10Код:
'--' + boundary + #13#10Код:
#13#10#13#10 + boundaryКод:
#13#10 + '--' + boundary + '--' + #13#10Также, этот код относится к не наилучшему стилю: Код:
Headers := StringReplace(Headers, 'con-len', IntToStr(Length(multi)), []);Код:
file_get_contents(AFile); |
вот запрос выдранный из graffiti.swf
Код:
POST /graffiti.php?to_id=52505311&group_id=0 HTTP/1.0 |
Цитата:
Код:
Content-Type: multipart/form-data; boundary=----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POSTКод:
------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST |
и реально)) Спасибо )) с этими минусами (тире) все мозги кипят просто уже! оо :o :o
|
Разве нет api метода для загрузки граффити?
|
еть! но всеравно ты заливаешь файл на сервер. Дело не в сложности использования методов (api или стандартный вк метод). Дело в основе
|
Цитата:
|
Цитата:
|
RedFern.89 мне кажется через пару лет у тебя будет программа с интерфейсом и функциями вконтакта которая будет отправлять HTTP запросы на сервер вконтакта напрямую, а не через wеb интерфейс...
RedFern.89 учи js php mySQL и переходи уже на веб кодинг ) |
js и php я чутка и так знаю =) на уровне не новичка так скажем))
|
ну звиздец какойто просто...
Дабы не плодить кучу тем по моим вопросам, задам вопрос тут. Есть 1 функция и одна процедура. Обе взаимосвязанны. Называются Get и Redirect. Думаю человек, знающий протокол HTTP поймет, что за функции. Допустим при выполнении функции GET произошло 2 редиректа. Как сделать так, что бы функция GET закончила свое выполнение, до тех пор, пока все редиректы не закончатся? т.е. вернула страницу конечного редиректа. В моем же случае функция GET возврщает код 1й страницы, а нужно той страницы, на которую произошла переадресация. Получается так, что функция get работает дальше и грузит все страницы, но в том коде, в котором она выполняется она отдала код 1й страницы и все. Привожу коды обеих процедур:
Код:
// ---- Обрабатываем перенаправление ---- |
Цитата:
Вообще, если я правильно тебя понял то тебе надо просто организовать цикл. Что-то типа: while Pos('302', Result) <> 0 do Redirect(Result, Host); |
Цитата:
и в твоем случае он будет все время грузить последнюю страницу... не вариант |
Так епт сделай Redirect функцией, которая например возвращает true если редирект был и false если не был
Вообше, имхо извращенное у тебя распределение по методам |
GhostOnline, пример в студию!!!
|
Нужно чтобы твоя функция Redirect возвращала тело новой скачанной страницы. Тогда можно реализовать цикл, который написал GhostOnline.
|
вообщето цикл так и висит, потому-что он читает код первого ответа и все...
|
Пипец..Ты зациклил 2 метода, в первом вызываешь второй, во втором первый, и т.д.. еще удивляешься почему возвращается "код певрого ответа"
Get - функция, она возвращает result. Далее если ответ 302 то ты вызываешь процедуру Redirect и ей передаешь resault. Процедура по определению ничего не возвращает, и с result ничего не делает, потому что: 1. Ты в процедуре не оперируешь параметром AData 2. Даже если бы захотел оперировать, то значение все равно бы не изменилось, ибо: const AData Цитата:
PS Мораль такова: вызываемая подпрограмма не может изменять результат той подпрограммы в которой она была вызвана, за исключением способа передачи по ссылке(var) |
уважаемый GhostOnline, я вас понел)) спасибо большое))
|
| Время: 07:58 |