2013-03-12 4 views
0

Я пишу HTTP-сервер. Мой сервер должен обрабатывать многопроцессорные запросы Http. В моей предыдущей реализации я извлекал данные с помощью заголовка длины контента, присутствующего в каждой части запроса. Клиент, который я использовал, дает заголовок длины контента с каждой частью (файлом) в многопрофильном запросе.Как извлечь данные из многостраничного запроса Http?

Но другой клиент не предоставляет длину контента для каждого файла. В моей реализации я использую заголовок длины содержимого, чтобы извлечь столько байтов и сохранить их в файл.

Скажите, пожалуйста, как я могу извлечь данные сейчас.

Заголовки, которые я получаю сейчас:

POST xxxxxxxxxxxxxxxxxxxxxxx&currentTab=PHOTOxxxxxxxxxxxxxxxx HTTP/1.1 
Content-Length: 6829 
Content-Type: multipart/form-data; boundary=SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj; charset=UTF-8 
Host: host 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/xxxxxxxx 
Accept-Encoding: gzip 

--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj 
Content-Disposition: form-data; name="file"; filename="imagesCA5L2CL6_jpg(2)_jpg.jpg" 
Content-Type: photo/jpg 

**Some Data byte array** 
--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj-- 

В этом запросе, в настоящее время заголовка Content-Length в данных деталей.

EDIT:

Ранее этот клиент используется для отправки заголовка длины содержимого в каждой части. Но по какой-то причине он больше не отправляет его. Может ли кто-нибудь предложить какую-либо причину этого.

благодаря

+0

вы пытались HttpContext.Current.Request.Files [0] .InputStream; ? – Popeye

+0

Я не использую какие-либо классы C#. Я получаю исходные данные из сокетов, которые я должен разбирать. – vijay053

ответ

0

Посмотрите на RFC 2616, если вы хотите реализовать/1.1 сервер HTTP. См. section 4.4 о том, как определить длину сообщения. См. RFC 2388 о том, как реализовать multipart/form-data.

Настоящий ответ: не изобретать велосипед, иначе вам придется перепланировать несколько сотен страниц RFC. Там есть множество библиотек и серверов.

Если вы хотите написать свой собственный веб-сервер, например, в качестве упражнения, вы бы уже нашли эти RFC, верно?

Смежные вопросы