Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
ВнизКак в PHP4 сохранить текст HTTP-запроса в файл? Найти похожие ветки
← →
kaif © (2008-04-03 22:32) [0]Прошу прощения, что задаю здесь этот вопрос.
Срочно нужно.
Я отправляю multipart/form-data (ручками).
Там у меня JPEG внутри и еще кой-какие поля. На том конце PHP4 обычные поля видит, а JPEG - не видит. А как заголовки и тело HTTP-запроса в исходном виде в файл на том конце сохранить, мой партнер не знает. Подскажите функцию, плиз.
Заранее признателен.
← →
kaif © (2008-04-03 22:37) [1]Я хочу сравнить то, что посылает браузер из формы методом POST при отправке файла JPEG на сервер с тем, что посылаю я руками. Для этого нужно сохранить оба текста HTTP-запроса в файл и сравнить.
← →
DVM © (2008-04-03 22:42) [2]
> Для этого нужно сохранить оба текста HTTP-запроса в файл
> и сравнить.
Снифер возьми и не мучайся. Ethereal (или как он там теперь называется) например.
← →
kaif © (2008-04-03 22:52) [3]Отладка идет на хосте провайдера.
Неужели то, что в ASP.NET я сделал за 1 минуту, в PHP4 так сложно сделать? Банально сохранить текст исходного запроса в файл...
← →
DVM © (2008-04-03 22:54) [4]
> Отладка идет на хосте провайдера.
Но запрос же посылает клиентский компьютер. У провайдера он будет в точности такой же. Поэтому проще смотреть что отсылает клиент. А возможность такая в PHP есть. Ща поищу, не помню.
← →
kaif © (2008-04-03 22:59) [5]Я просто никогда не работал со сниферами. Даже не знаю, как он ставится. :(
Идеально было бы на том конце отловить и посмотреть... Если, конечно, есть такая возможность. Хотя в любом случае спасибо за идею. Если ничто другое не поможет, попробую прибегнуть к перехвату пакетов. Просто это не совсем мой профиль...
← →
easy © (2008-04-03 23:01) [6]
$headers = getallheaders();
while (list ($header, $value) = each ($headers)) {
echo "$header: $value<br />\n";
}
← →
DrPass © (2008-04-03 23:02) [7]
> Я просто никогда не работал со сниферами. Даже не знаю,
> как он ставится. :(
Проще, чем скрипт РНР :)
Запустил инсталляху WinPCap (это драйвер для перехвата пакетов)... ну и собственно, запустил Ethereal. Указал какой порт прослушивать, нажал старт, нажал стоп. И смотри что он напрочитывал
← →
kaif © (2008-04-03 23:03) [8]2 easy ©
Так это наверно только заголовки вернет, судя по тексту...
А мне нужно тело запроса тоже увидеть. Там вся соль творится. Вся эта мультипартовая муть с разделителями и переводами строки.
← →
DVM © (2008-04-03 23:06) [9]
> Если ничто другое не поможет, попробую прибегнуть к перехвату
> пакетов. Просто это не совсем мой профиль...
У Ethereal это вообще элементарно. Он тебе и все пакеты соберет вместе относящиеся к одному соединению и декодирует и представит в удобном читабельном виде.
← →
kaif © (2008-04-03 23:10) [10]Скачиваю 12 Mb Ethereal...
И буду ставить его на клиент.
Неужели это самый короткий путь для PHP-ста, который хочет узнать самую первейшую на свете вещь - исходный HTTP-запрос?
Это примерно как если бы дельфисту сказали "открой и распечатай файл", а он бы сказал "тут перехватчик обращений Windows к драйверу жесткого диска требуется".
← →
kaif © (2008-04-03 23:11) [11]Ну вот. Докачал 12 М. Запустил. Говорит - файл испорчен. :(
← →
DVM © (2008-04-03 23:14) [12]
> Неужели это самый короткий путь для PHP-ста, который хочет
> узнать самую первейшую на свете вещь - исходный HTTP-запрос?
>
$HTTP_RAW_POST_DATA - поищи по этому слову инфу
← →
kaif © (2008-04-03 23:24) [13]2 DVM © (03.04.08 23:14) [12]
Спасибо! Уже теплее. :)
← →
Reindeer Moss Eater © (2008-04-03 23:50) [14]простой локальный самописный за пять минут http сервер с логированием все бы показал.
← →
kaif © (2008-04-04 14:18) [15]Я не умею писать HTTP-сервер за пять минут, а разбираться в этом мне нужно несколько больше, чем 5 минут. Тем более, что у меня есть HTTP-сервер ASP.NET, умеющий сохранять тело запроса. Так что писать HTTP-сервер мне и незачем в данной конкретной ситуации.
В конце-концов удалось разобраться. При помощи быстро сварганенной страницы на ASP.NET с компонентом UploadFile. Выяснилось, что после байтового потока отправляемого файла вставляется еще один разделитель, который не был упомянут в той статье (по JAVA), на которую я опирался, делая тело запроса руками. С парой лишних символов "-" в конце. И еще один возврат каретки. Так заработало.
Всем спасибо.
← →
Reindeer Moss Eater © (2008-04-04 14:26) [16]readln в цикле, пока не придет пустая строка.
смотрим, если в принятом поле контент ленс, и если есть, читаем буфер указанного размера.
вот и все.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c