Новичок в этой теме, так что сильно не пинайте. Не получается сделать корректный запрос, перечитал кучу информации, ничего не помогает. На сайт картинку загружает, но ответ сервера не одна ссылка а все ссылки кторые когда либо загружались через программу. Такое чувство как будто сессия не закрывается. Вот функция:
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
const
CRLF = #$0D + #$0A;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '1231654654';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: image/jpeg' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Docu ment);
finally
HTTP.Free;
end;
Вот так вызываю её:
begin
st := TFileStream.Create('2.jpg', fmOpenRead or fmShareDenyWrite);
try
ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines));
ShellExecute(0, 'open', 'http://рiсuрiс.nеt/add_photo.php', nil, nil, SW_SHOW);
finally
st.Free;
end;
т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл. Но если делать через эту функцию ответ приходит с кучей ссылок на картинки которые я раньше загружал.
Даже если просто сделать этот запрос HTTP.HTTPMethod('POST', URL);
то ответ приходит со всеми ссылками. Да даже если просто открыть браузером страницу http://рiсuрiс.nеt/add_photo.php то она отразить все добавленные картинки через программу.
Не увидел в приведенном коде обработки ответа сервера.
То, что вызывает ShellExecute — это уже новый запрос, а Вам нужно получить то,
что вернул сервер в ответ на первый HTTP POST.
Здравствуйте, okman, Вы писали:
O>Здравствуйте, surovnev.
O>Не увидел в приведенном коде обработки ответа сервера. O>То, что вызывает ShellExecute — это уже новый запрос, а Вам нужно получить то, O>что вернул сервер в ответ на первый HTTP POST.
Вот функция:
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
const
CRLF = #$0D + #$0A;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '1231654654';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: image/jpeg' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Docu ment);
finally
HTTP.Free;
end;
Вызываю её нажатием на кнопку
st := TFileStream.Create('2.jpg', fmOpenRead or fmShareDenyWrite);
try
ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines));
finally
st.Free;
т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))
и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
Здравствуйте, surovnev, Вы писали:
S>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines)) S>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
А Вы уверены, что составляете POST-запрос данного типа корректно ?
S>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.
Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите,
что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует
проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.
Здравствуйте, okman, Вы писали:
O>Здравствуйте, surovnev, Вы писали:
S>>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines)) S>>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
O>А Вы уверены, что составляете POST-запрос данного типа корректно ?
S>>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.
O>Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите, O>что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует O>проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.
Сейчас проверил код ответа (showmessage(inttostr(http.Resultcode)) выдаёт 200
Здравствуйте, okman, Вы писали:
O>Здравствуйте, surovnev, Вы писали:
S>>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines)) S>>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
O>А Вы уверены, что составляете POST-запрос данного типа корректно ?
S>>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.
O>Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите, O>что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует O>проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.
Через Wireshark не могу проверить (чёт ничего в ней не понял)
я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения:
Здравствуйте, surovnev, Вы писали:
S>Через Wireshark не могу проверить (чёт ничего в ней не понял) S>я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения: S>...
Параметры загрузки изображений на данный хостинг устанавливаются отдельными HTTP-запросами,
которые выполняются до главного POST-а. Попробуйте поменять размер превьюшек, либо попереключайте
checkbox, и посмотрите, что в этот момент уходит в сеть. Сессия там контролируется через Cookie.
А ответ сервера приходит в виде HTML, его еще нужно распарсить, чтобы вытащить ссылки на картинки.
Здравствуйте, okman, Вы писали:
O>Здравствуйте, surovnev, Вы писали:
S>>Через Wireshark не могу проверить (чёт ничего в ней не понял) S>>я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения: S>>...
O>Параметры загрузки изображений на данный хостинг устанавливаются отдельными HTTP-запросами, O>которые выполняются до главного POST-а. Попробуйте поменять размер превьюшек, либо попереключайте O>checkbox, и посмотрите, что в этот момент уходит в сеть. Сессия там контролируется через Cookie. O>А ответ сервера приходит в виде HTML, его еще нужно распарсить, чтобы вытащить ссылки на картинки.
Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.
У меня есть страница add_photo.php вот её код:
<?
require_once("blocks/bd.php");
require_once("blocks/functions.php");
$date=date("Y-m-d");
if (isset($_FILES['UploadFile'])) {
if (($_FILES['UploadFile'] ['type'] != "image/jpeg") && ($_FILES['UploadFile'] ['type'] != "image/png") && ($_FILES['UploadFile'] ['type'] != "image/png") && ($_FILES['UploadFile'] ['type'] != "image/gif")) {
$error="Изображение должно быть формата jpg, jpeg, gif или png";
} else {
$time=time();
$time2=time()-60*60*24*30;
$result=mysql_query("SELECT * FROM photos WHERE time<'$time2'",$db);
while ($myrow=mysql_fetch_array($result)) {
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_med.jpg");
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_mini.jpg");
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_norm.jpg");
if ($myrow['mas']!='') {
$result2=mysql_query("SELECT * FROM photos WHERE mas='{$myrow['mas']}'",$db);
if (mysql_num_rows($result2)==1) @unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['mas']."_mas.jpg");
}
}
$result=mysql_query("DELETE FROM photos WHERE time<'$time2'",$db);
@mkdir($_SERVER['DOCUMENT_ROOT']."/images/".$date);
@chmod($_SERVER['DOCUMENT_ROOT']."/images/".$date,0777);
$name=$_FILES['UploadFile'] ['name'];
$i=strlen($name)-1;
while ($name[$i]!=".") $i--;
$ext=substr($name,$i+1);
Я так понял страница формирует ссылки через этот запрос: $result=mysql_query("SELECT * FROM photos WHERE user_id='{$_SESSION['user']}'",$db);
А я как раз не передаю значение user, может потому что оно пустое по этому страница отражает все картинки загруженные через программу. А вот как передать его я незнаю...
Вот страница через которую происходит отправка изображения (index.php)
<?
require_once("blocks/bd.php");
Здравствуйте, surovnev, Вы писали:
S>Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.
Вы с понятием HTTP-сессии знакомы ?
Так вот, этот сервер для загрузки изображений использует несколько запросов-ответов в рамках
одной HTTP-сессии. Сначала, когда клиент первый раз заходит на сервер, тот генерирует
уникальный для него id, который отдает в Cookie. Этот Cookie как бы говорит клиенту: "смотри,
вот id, под которым ты будешь числиться у меня в базе, не потеряй его, пока будешь со
мной работать". Клиент запоминает Cookie и дальше будет вставлять его во все свои запросы на
сервер, пока не выполнит свою работу.
Последующие запросы используются либо для установки параметров, либо для загрузки самого изображения.
То есть, система в действии выглядит примерно так:
Клиент ---> Серверу
"Привет, дай мне код главной страницы"
Сервер ---> Клиенту
"OK, держи: <html><head ... ... ... </html>
Кстати, твой ид будет a8CxB33dyQWbLZ"
Клиент ---> Серверу
"Хочу, чтобы размер превью был 80 на 80
мой ид = a8CxB33dyQWbLZ"
Сервер ---> Клиенту
"OK, установил"
Клиент ---> Серверу
"Хочу, чтобы на странице показывалось только одно изображение
мой ид = a8CxB33dyQWbLZ"
Сервер ---> Клиенту
"OK, нет проблем"
Клиент ---> Серверу
"Все, лови картинку:
0B CD E3 AF 01 01 D4 FF
33 17 BA BC EA 08 03 44
11 3C ...
...
...
... E0 EA
мой ид = a8CxB33dyQWbLZ"
Сервер ---> Клиенту
"Хорошо, принято, вот тебе мой ответ,
там в теле HTML-сообщения ссылки на картинку:
<html><head ... url="..." ... </html>"
В конкретные детали работы данного сервера я не вникал, но в общих чертах оно примерно так и работает.
То есть, Вам нужно включить мониторинг трафика, зайти через браузер на сайт, затем понажимать
контролы/чекбоксы и посмотреть, какие запросы генерирует браузер и что отдает сервер.
Затем загрузить картинку и посмотреть, какие данные ходят там.
В запросах обратите внимание на передающиеся параметры, ну а в целом — на заголовки
Cookie (клиент) и Set-Cookie (сервер), на то, кто, когда и как устанавливает их.
Возможно, вместо Cookie кое-где будет использоваться E-Tag.
Ну а дальше пробуйте делать то же самое программно. Если что-то не получается —
подключаете мониторинг трафика и ищете отличия свой реализации от "браузерной".
Это все, чем я могу помочь.
Как там говорится: "хочешь накормить голодного — дай ему удочку".
Здравствуйте, okman, Вы писали:
O>Здравствуйте, surovnev, Вы писали:
S>>Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.
O>Вы с понятием HTTP-сессии знакомы ? O>Так вот, этот сервер для загрузки изображений использует несколько запросов-ответов в рамках O>одной HTTP-сессии. Сначала, когда клиент первый раз заходит на сервер, тот генерирует O>уникальный для него id, который отдает в Cookie. Этот Cookie как бы говорит клиенту: "смотри, O>вот id, под которым ты будешь числиться у меня в базе, не потеряй его, пока будешь со O>мной работать". Клиент запоминает Cookie и дальше будет вставлять его во все свои запросы на O>сервер, пока не выполнит свою работу. O>Последующие запросы используются либо для установки параметров, либо для загрузки самого изображения. O>То есть, система в действии выглядит примерно так: O>
O>Клиент ---> Серверу
O>"Привет, дай мне код главной страницы"
O>Сервер ---> Клиенту
O>"OK, держи: <html><head ... ... ... </html>
O>Кстати, твой ид будет a8CxB33dyQWbLZ"
O>Клиент ---> Серверу
O>"Хочу, чтобы размер превью был 80 на 80
O>мой ид = a8CxB33dyQWbLZ"
O>Сервер ---> Клиенту
O>"OK, установил"
O>Клиент ---> Серверу
O>"Хочу, чтобы на странице показывалось только одно изображение
O>мой ид = a8CxB33dyQWbLZ"
O>Сервер ---> Клиенту
O>"OK, нет проблем"
O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA
O>мой ид = a8CxB33dyQWbLZ"
O>Сервер ---> Клиенту
O>"Хорошо, принято, вот тебе мой ответ,
O>там в теле HTML-сообщения ссылки на картинку:
O><html><head ... url="..." ... </html>"
O>
O>В конкретные детали работы данного сервера я не вникал, но в общих чертах оно примерно так и работает. O>То есть, Вам нужно включить мониторинг трафика, зайти через браузер на сайт, затем понажимать O>контролы/чекбоксы и посмотреть, какие запросы генерирует браузер и что отдает сервер. O>Затем загрузить картинку и посмотреть, какие данные ходят там.
O>В запросах обратите внимание на передающиеся параметры, ну а в целом — на заголовки O>Cookie (клиент) и Set-Cookie (сервер), на то, кто, когда и как устанавливает их. O>Возможно, вместо Cookie кое-где будет использоваться E-Tag. O>Ну а дальше пробуйте делать то же самое программно. Если что-то не получается - O>подключаете мониторинг трафика и ищете отличия свой реализации от "браузерной".
O>Это все, чем я могу помочь. O>Как там говорится: "хочешь накормить голодного — дай ему удочку".
Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно
O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA
O>мой ид = a8CxB33dyQWbLZ"
Вот это:
O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA
я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать
O>мой ид = a8CxB33dyQWbLZ"
я не знаю... не знаю какой командой или запросом...
Здравствуйте, surovnev, Вы писали: S>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно S>... S>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать S>я не знаю... не знаю какой командой или запросом...
В Cookie клиент передает id, выданный сервером.
Части multipart-запроса — это параметры будущей загрузки картинки.
Например, size_multi — это размер превьюшек.
В данном запросе он пока 80 (то есть, 80 на 80 пикселей).
Устанавливаю размер превью 150 на 150
POST / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 411
Content-Type: multipart/form-data; boundary=----------HOVnBcZ97JvReeL9wSog8M
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size_multi" 150
Часть 2
Content-Disposition: form-data; name="toone"
1
Часть 3
Content-Disposition: form-data; name="color"
0
Часть 4
Content-Disposition: form-data; name="file_upload"; filename=""
Снова Cookie. К чему бы это ?
Кстати, размер превью теперь 150 на 150. См. выделенное.
Делаю черный цвет фона
POST / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 411
Content-Type: multipart/form-data; boundary=----------X6jN5dvwAF93bNePGRg07B
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size_multi"
150
Часть 2
Content-Disposition: form-data; name="toone"
1
Часть 3
Content-Disposition: form-data; name="color"
1
Часть 4
Content-Disposition: form-data; name="file_upload"; filename=""
color=1 — это, очевидно, означает черный цвет.
Пока я его не поменял, было color=1 (см. предыдущие запросы).
И, наконец, загружаю картинку
POST /add_photo.php HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 257305
Content-Type: multipart/form-data; boundary=----------h6PznwZWpAXR2ZgQ5I4bBG
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size"
80
Часть 2
Content-Disposition: form-data; name="UploadFile"; filename="Безымянный.jpg"
Content-Type: image/jpeg
Тело запроса 256933 байт
Часть 3
Content-Disposition: form-data; name="but_addphoto2"
По этой части, надеюсь, вопросов нет.
В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое,
нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их
значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и
изучая запросы-ответы.
Здравствуйте, okman, Вы писали: O>Здравствуйте, surovnev, Вы писали: S>>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно S>>... S>>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать S>>я не знаю... не знаю какой командой или запросом... O>Ну вот смотрите. O>
O>В Cookie клиент передает id, выданный сервером. O>Части multipart-запроса — это параметры будущей загрузки картинки. O>Например, size_multi — это размер превьюшек. O>В данном запросе он пока 80 (то есть, 80 на 80 пикселей).
O>В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое, O>нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их O>значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и O>изучая запросы-ответы.
Всё, разобрался. Там выдача картинок происходит на соснове куков. ДОбавил это http.Headers.Add('Cookie: PHPSESSID='+'55a3glrjhvgc139sgje1pe4af6'+';'); и всё стало нормально. Осталось только научится генерировать вот это 55a3glrjhvgc139sgje1pe4af6
Здравствуйте, okman, Вы писали: O>Здравствуйте, surovnev, Вы писали: S>>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно S>>... S>>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать S>>я не знаю... не знаю какой командой или запросом... O>Ну вот смотрите. O>
O>В Cookie клиент передает id, выданный сервером. O>Части multipart-запроса — это параметры будущей загрузки картинки. O>Например, size_multi — это размер превьюшек. O>В данном запросе он пока 80 (то есть, 80 на 80 пикселей).
O>В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое, O>нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их O>значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и O>изучая запросы-ответы.
Здравствуйте, surovnev, Вы писали:
S>Всё, разобрался. Там выдача картинок происходит на соснове куков. ДОбавил это http.Headers.Add('Cookie: PHPSESSID='+'55a3glrjhvgc139sgje1pe4af6'+';'); и всё стало нормально. Осталось только научится генерировать вот это 55a3glrjhvgc139sgje1pe4af6
Это значение должно генерироваться сервером, а не клиентом.
Он в самом первом ответе отдает заголовок Set-Cookie, вот Вы должны запомнить
его значение и использовать в своих запросах, в заголовке Cookie.
Посмотрите мои ответы выше — я это все подробно расписал.
Вообще, почитайте еще RFC 1945 (HTTP/1.0) и RFC 2616 (HTTP/1.1), а еще лучше
какую-нибудь книжку