преобразовать servletinputstream в sequenceinputstream - PullRequest
0 голосов
/ 15 марта 2011

Я получаю сервлет, который содержит входные данные.

InputStream input=req.getInputStream();

Когда я набираю приведение входного потока к sequenceinputstream, я получаю ClassCastException org.apache.catalina.connector.CoyoteInputStream не может быть приведен к java.io.SequenceInputStream. Пожалуйста, предоставьте решение

Ответы [ 4 ]

1 голос
/ 15 марта 2011

Почему вы хотите использовать sequenceinputstream?

Запрос сервлета может содержать только InputStream. Вы не можете конвертировать или разыгрывать. Если ваша цель состоит в том, чтобы прочитать входные данные, полученные от сервлета, просто продолжайте читать InputStream.

1 голос
/ 15 марта 2011

Я думаю, вы все еще имеете дело с вашей другой проблемой . Вы не можете конвертировать ServletInputStream в SequenceInputStream. Вы можете создать новый SequenceInputStream из ServletInputStream, но это вам не поможет, потому что вы пытаетесь получить доступ к отдельным частям (а ServletInputStream просто не имеет этой информации). Откажитесь, вы пытаетесь решить не ту проблему.

Если вы имеете дело с загруженными файлами, попробуйте использовать Commons / FileUpload . См. страницу использования для примеров.

0 голосов
/ 15 марта 2011

Что вы подразумеваете под "в запросе сервлета они отправляют sequenceinputstream"? Вы имеете в виду, что клиент отправляет данные, читая их из sequenceinputstream? В любом случае два потока (выходной поток от клиента и клиентский в сервлете) совершенно не связаны, я думаю, вы просто не сможете сделать то, что имеете в виду. Также, глядя на API org.apache.catalina.connector.CoyoteInputStream, я не вижу способа получить «оригинальный» поток ввода.

0 голосов
/ 15 марта 2011

SequenceInputStream объединяет два или более входных потока в один.Его можно создать, передав InputStreamEnumerator, как показано ниже:

Vector files = new Vector(); 
files.addElement("/run.bat"); 
files.addElement("/run.sys"); 
InputStreamEnumerator e = new InputStreamEnumerator(files); 
InputStream input = new SequenceInputStream(e); 

, или предоставив два InputStream, как показано ниже:

InputStream input1 = new FileInputStream("c:\\data\\file1.txt");
InputStream input2 = new FileInputStream("c:\\data\\file2.txt");
InputStream combined = new SequenceInputStream(input1, input2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...