Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить содержимое POST запроса "application/xml" сервлет jetty / 13 сообщений из 13, страница 1 из 1
25.03.2020, 14:42
    #39941012
ToTAmon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Пытаюсь осуществить POST запрос к серверу jetty. Сервлет отрабатывает, ловлю request. Но никак не могу понять как из него получить отправленные данные.
Подскажите куда копать, пожалуйста!

Из отладчика:
авторrequest = {Request@1883} "Request(POST //med-fr:8180/FR)@1972b201"
_channel = {HttpChannelOverHttp@1894} "HttpChannelOverHttp@64ee8b0{r=1,c=false,a=DISPATCHED,uri=//med-fr:8180/FR,age=8027}"
_requestAttributeListeners = {ArrayList@1895} size = 0
_input = {HttpInputOverHTTP@1896} "HttpInputOverHTTP@1b6d5d8f[c=0,q=0,[0]=null,s=STREAM]"
_metaData = {MetaData$Request@1897} "POST{u=//med-fr:8180/FR,HTTP/1.1,h=5,cl=110}"
_method = "POST"
_uri = {HttpURI@1922} "//med-fr:8180/FR"
_httpVersion = {HttpVersion@1923} "HTTP/1.1"
_fields = {HttpFields@1924} "Host: med-fr:8180\r\nUser-Agent: 1C+Enterprise/8.3\r\nAccept: */*\r\nContent-Type: application/xml\r\nContent-Length: 110\r\n\r\n"
_contentLength = 110
_trailers = {HttpChannel$lambda@1925}
_originalURI = "/FR"
_contextPath = ""
_servletPath = "/FR"
_pathInfo = null
_secure = false
_asyncNotSupportedSource = null
_newContext = false
_cookiesExtracted = true
_handled = false
_contentParamsExtracted = false
_requestedSessionIdFromCookie = false
_attributes = {AttributesMap@1900} "{org.eclipse.jetty.multipartConfig=javax.servlet.MultipartConfigElement@21b60fb2}"
_authentication = null
_characterEncoding = "UTF-8"
_context = {ServletContextHandler$Context@1902} "ServletContext@o.e.j.s.ServletContextHandler@16ec5519{/,null,AVAILABLE}"
_cookies = null
_dispatcherType = {DispatcherType@1903} "REQUEST"
_inputState = 0
_queryParameters = null
_contentParameters = null
_parameters = null
_queryEncoding = null
_reader = null
_readerEncoding = null
_remote = null
_requestedSessionId = null
_scope = {ServletHolder@1904} "Model.ServletFineReader-517cd4b@271adc1a==Model.ServletFineReader,jsp=null,order=-1,inst=true,async=true"
_session = null
_sessionHandler = {SessionHandler@1905} "org.eclipse.jetty.server.session.SessionHandler769151807==dftMaxIdleSec=-1"
_timeStamp = 1585135963159
_multiParts = null
_async = null
...
Рейтинг: 0 / 0
25.03.2020, 14:50
    #39941013
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Commons FileUpload ?
Content-Type: application/пофигу-что возвращает поток байт, который читается вполне обычным образом.
...
Рейтинг: 0 / 0
25.03.2020, 14:59
    #39941016
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Basil A. Sidorov
Commons FileUpload ?
Content-Type: application/пофигу-что возвращает поток байт, который читается вполне обычным образом.
код отправки нужен
...
Рейтинг: 0 / 0
25.03.2020, 14:59
    #39941017
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
PetroNotC Sharp
Basil A. Sidorov
Commons FileUpload ?
Content-Type: application/пофигу-что возвращает поток байт, который читается вполне обычным образом.
код отправки нужен
это ТС у пост
...
Рейтинг: 0 / 0
25.03.2020, 15:05
    #39941021
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
PetroNotC Sharp
PetroNotC Sharp
код отправки нужен
это ТС у пост
И?
Commons FileUpload не подходит в принципе, POST не позволяет получить ServletInput/OutputStream или что?
...
Рейтинг: 0 / 0
25.03.2020, 15:17
    #39941025
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Basil A. Sidorov,
Для ответа на вопрос нужен код а не логи.
Я их даже не читал.
...
Рейтинг: 0 / 0
25.03.2020, 15:56
    #39941032
ToTAmon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
PetroNotC Sharp,
Мне код отправки не жалко просто он на 1С lang.


1С lang HTTP = Новый HTTPСоединение(Сервер,Порт,,,,,Неопределено);

СтрокаЗапроса = Новый ЗаписьXML;
СтрокаЗапроса.УстановитьСтроку("UTF-8");

СтрокаЗапроса.ЗаписатьБезОбработки("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
|");

СтрокаЗапроса.ЗаписатьНачалоЭлемента("NameFileIn");
СтрокаЗапроса.ЗаписатьТекст(XMLСтрока(Документ.ИмяФайла));
СтрокаЗапроса.ЗаписатьКонецЭлемента();


ПараметрыЗапроса = СтрокаЗапроса.Закрыть();
Сообщить(""+ПараметрыЗапроса);
// Отсылаем POST запрос на обработку.
// СсылкаНаРесурс — ссылка на веб-сервер (страницу), к которой посылается POST запрос
HTTPЗапрос = Новый HTTPЗапрос("FR");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/xml");
HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрыЗапроса, КодировкаТекста.UTF8);

Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос);


XML содержит
XML <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NameFileIn>valid-analyt-procedure.pdf</NameFileIn>
...
Рейтинг: 0 / 0
25.03.2020, 16:02
    #39941034
ToTAmon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Basil A. Sidorov
Commons FileUpload ?
Content-Type: application/пофигу-что возвращает поток байт, который читается вполне обычным образом.


:( Ткните пожалуйста, если не трудно, примером. Я наверняка туплю, но реально уже третий день вожусь безрезультатно.
...
Рейтинг: 0 / 0
25.03.2020, 16:11
    #39941037
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
ToTAmon,
Круто. А причем java?
Тогда так:
- сделай запрос в js, IE, утилите к эксплореру и приходи в топик
- перехвати запрос сниффером.
...
Рейтинг: 0 / 0
25.03.2020, 16:18
    #39941040
ToTAmon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
PetroNotC Sharp,
На Java сервер написан. :) К которому обращение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
    
public void doPost(HttpServletRequest request,
                       HttpServletResponse response) throws ServletException, IOException {

        System.out.println("POST1");
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        String file = request.getParameter("file");
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);

        if (isMultipart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);

            try {
                List items = upload.parseRequest(request);
                Iterator iterator = items.iterator();
                while (iterator.hasNext()) {
                    FileItem item = (FileItem) iterator.next();

                    if (!item.isFormField()) {
                        String fileName = item.getName();

                        String root = getServletContext().getRealPath("/");
                        File path = new File(root + "/uploads");
                        if (!path.exists()) {
                            boolean status = path.mkdirs();
                        }

                        File uploadedFile = new File(path + "/" + fileName);
                        System.out.println(uploadedFile.getAbsolutePath());
                        item.write(uploadedFile);
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }        //request.
    }
...
Рейтинг: 0 / 0
25.03.2020, 17:00
    #39941048
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
ToTAmon,
Ответ тот же.
Снаружи проверка будет правильнее и точнее.
...
Рейтинг: 0 / 0
25.03.2020, 17:04
    #39941049
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Я не понял, что общего между application/xml и ServletFileUpload.

https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getInputStream()
...
Рейтинг: 0 / 0
25.03.2020, 21:42
    #39941109
ToTAmon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить содержимое POST запроса "application/xml" сервлет jetty
Leonid Kudryavtsev
Я не понял, что общего между application/xml и ServletFileUpload.

https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getInputStream()


Огромное спасибо! Проблема решена благодаря вашему совету.

Нужный код
Код: java
1.
2.
        Scanner s = new Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A");
        String xmlF = s.hasNext() ? s.next() : "";
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить содержимое POST запроса "application/xml" сервлет jetty / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]