HTTP протокол. метод PUT. первый байт в данных - 0
От: AsM2  
Дата: 15.01.03 08:48
Оценка:
Добрый день.

Заливал я бинарные файлы методом PUT по HTTP протоколу и столкнулся с такой проблемой – если первый байт данных – 0, то файл получается нулевой длинны, а если первый байт какой либо другой (точно не уверен, может быть и на каких то еще кодах так происходит... не проверял точно), то тогда все нормально. Причем в самих данных (только не первом байте) может быть сколько угодно нулей – это никак не влияет на файл – он получается такого же размера, что и должен был быть.
Использовал я ITC. И под XMLHTTP то же самое.

ПОМОГИТЕ!!!

С уважением, Александр Семенов.
Re: HTTP протокол. метод PUT. первый байт в данных - 0
От: J.J.OK  
Дата: 15.01.03 08:57
Оценка:
[ ... ]

А ты указываешь Content-Length HTTP-headers?
Чем безопаснеe — тем неудобнее ;-)
Re[2]: HTTP протокол. метод PUT. первый байт в данных - 0
От: AsM2  
Дата: 15.01.03 10:30
Оценка:
Здравствуйте, J.J.OK, Вы писали:

JJO> [ ... ]


JJO>А ты указываешь Content-Length HTTP-headers?

Нет, но указывать пробовал — не помогало.

С уважением, Александр Семенов
Re[3]: HTTP протокол. метод PUT. первый байт в данных - 0
От: J.J.OK  
Дата: 15.01.03 10:38
Оценка:
JJO>> [ ... ]

JJO>>А ты указываешь Content-Length HTTP-headers?

AM>Нет, но указывать пробовал — не помогало.

попробуй еще указать TransferEncoding binary ...
ну а если совсем ни в какую (и если продукт позволяет) — делай Base64-encode и передавай текст — это уж точно отработает
Чем безопаснеe — тем неудобнее ;-)
Re: HTTP протокол. метод PUT. первый байт в данных - 0
От: DSD Россия http://911.ru/cv
Дата: 20.01.03 07:06
Оценка:
Здравствуйте, AsM2, Вы писали:

AM>Причем в самих данных (только не первом байте) может быть сколько угодно нулей – это никак не влияет на файл – он получается такого же размера, что и должен был быть.


А ты перевод строки какой используешь при отправке заголовков?
если однобайтовый юниксовый (\n), то все понятно. По стандарту в хттп
используется двухбайтовый перевод строки в http-заголовках, такой как в Windows.

возможно первый байт твоего запроса ожидается как недостающий байт двухбайтового перевода строки,
а приходит ноль(явный конец строковых данных). Вот сервер его и интерпретирует неправильно...
--
DSD
Re[2]: HTTP протокол. метод PUT. первый байт в данных - 0
От: AsM2  
Дата: 22.01.03 13:37
Оценка:
Здравствуйте, DSD, Вы писали:

[...]
DSD>А ты перевод строки какой используешь при отправке заголовков?

Так я вообще не трогаю заголовков...
использовал
ITC (.Execute URL, "PUT", data)
XMLHTT (.send data)

так что, к сожалению, не то...
Re[3]: HTTP протокол. метод PUT. первый байт в данных - 0
От: DSD Россия http://911.ru/cv
Дата: 22.01.03 19:33
Оценка:
Здравствуйте, AsM2, Вы писали:

AM>Так я вообще не трогаю заголовков...

AM>использовал
AM>ITC (.Execute URL, "PUT", data)
AM>XMLHTT (.send data)

AM>так что, к сожалению, не то...

ну может твоя софтина(функции, которые ты вызываешь) внутри что-то не так делает...

в любом случае это место (стык http-заголовка и body) всегда было глючным камнем преткновения...


И вообще совет — используй кодирование данный(base64, uuencode, quoted и т.п.), потому
как HTTP — все же текстовый протокол, и его поведение при работе с бинарными данными
конкретно не определено.
--
DSD
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.