Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java SE (J2SE)

Войти
Регистрация
Восстановить пароль
 
drno
0 / 0 / 0
Регистрация: 22.07.2016
Сообщений: 14
#1

Не транслируются значения в SOAP запрос - Java SE

27.10.2016, 13:25. Просмотров 245. Ответов 2

Здравствуйте.

У меня есть пример SOAP запроса

XML
1
2
3
4
5
6
7
8
9
10
11
12
         <?xml version="1.0" encoding="UTF-8" ?>
         <SOAP:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP:Body>
         <GetParameter xmlns="http://examples/2001">
         <request>
         <MonCode xmlns="http://newsite/mon">Latency</MonCode>
         <TimeFrom xmlns="http://newsite/mon">2016-10-26T11:00</TimeFrom>
         <TimeTo xmlns="http://newsite/mon">2016-10-26T12:00</TimeTo>
         </request>
         </GetParameter>
         </SOAP:Body>
         </SOAP:Envelope>
Формирую SOAP запрос на JAVA, использую SAAJ API

следующий код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       MessageFactory messageFactory = MessageFactory.newInstance();
    SOAPMessage message = messageFactory.createMessage();
    SOAPPart soapPart = message.getSOAPPart();
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
    envelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    envelope.addNamespaceDeclaration("soap", "http://schemas.xmlsoap.org/soap/envelop/");
 
    SOAPBody body = message.getSOAPBody();
    SOAPElement bodyElement = body.addChildElement("GetParameter");
    bodyElement.setAttribute("xmlns", "http://examples/2001");
    bodyElement = body.addChildElement("request");
    SOAPElement paramsElement = bodyElement.addChildElement("MonCode");
    paramsElement.setAttribute("xmlns", "http://newsite/mon");
    paramsElement.addTextNode("Latency");
    paramsElement = bodyElement.addChildElement("TimeFrom");
    paramsElement.setAttribute("xmlns", "http://newsite/mon");
    paramsElement.addTextNode("2016-10-26T11:00");
    paramsElement = bodyElement.addChildElement("TimeTo");
    paramsElement.setAttribute("xmlns", "http://newsite/mon");
    paramsElement.addTextNode("2016-10-26T12:00");
в результате получаю такой SOAP запрос

XML
1
2
3
4
5
6
7
8
9
10
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelop/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <GetParameter xmlns=""/>
    <request>
      <MonCode xmlns="">Latency</MonCode>
      <TimeFrom xmlns="">2016-10-26T11:00</TimeFrom>
      <TimeTo xmlns="">2016-10-26T12:00</TimeTo>
    </request>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Все хорошо, НО куда-то деваются значения атирибутов "http://examples/2001" "http://newsite/mon".

В чем моя ошибка и как решить эту проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2016, 13:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не транслируются значения в SOAP запрос (Java SE):

Запрос по SOAP - Программирование Android
Как взаимодействовать с Веб сервисами ../ws?wsdl Exlipce

HELP SOAP запрос - Web
Помогите построить запрос к Web-ceрвису. Есть описание WSDL: &lt;?xml version='1.0' encoding='utf-8' ?&gt; - &lt;definitions...

Soap запрос - Java EE
Здравствуйте! Нужно реализовать на Java soap запрос http://ws1.streamsms.ru/SmsService.php?WSDL http://ws1.streamsms.ru/GetSessionID ...

Soap запрос - Delphi
Добрый день, уважаемые гуру! Есть билинговая система Lanbilling . Пытаюсь запрос авторизации по soap procedure...

SOAP запрос на сервер - PHP
Привет! Есть сервер для теста платежной системы https://test.processing.kz/CNPMerchantWebServices/services/CNPMerchantWebService?wsdl...

SOAP запрос на PHP - PHP
Как создать SOAP запрос, какие минимальные требования, т.е. какие данные нужны? Вот к примеру имеется такая XML &lt;soapenv:Envelope...

2
_ViPeR_
434 / 409 / 65
Регистрация: 02.03.2010
Сообщений: 996
28.10.2016, 12:05 #2
xmlns - это не атрибут, это неймспейс XML, скорее всего, у SOAPElement есть метод установки (может так же как и у SOAPEnvelope - addNamespaceDeclaration) или что то в этом роде. Я не знаю этот API, но к бабке не ходи, неймспейсы для элементов точно не атрибутами проставляются.
1
drno
0 / 0 / 0
Регистрация: 22.07.2016
Сообщений: 14
28.10.2016, 12:11  [ТС] #3
с name space разобрался
пеперь так

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
        MessageFactory messageFactory = MessageFactory.newInstance();
        SOAPMessage soapMessage = messageFactory.createMessage();
 
// Retrieve different parts
        SOAPPart soapPart = soapMessage.getSOAPPart();
        SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
 
        soapEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
        soapEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
 
// Two ways to extract headers
    //    SOAPHeader soapHeader = soapEnvelope.getHeader();
    //    soapHeader = soapMessage.getSOAPHeader();
 
// Two ways to extract body
        SOAPBody soapBody = soapEnvelope.getBody();
        soapBody = soapMessage.getSOAPBody();
 
// To add some element
 
        SOAPElement GetParamter=soapBody.addBodyElement(new javax.xml.namespace.QName("http://examples/2001", "GetParamter"));
 
        GetParamter = GetParamter.addChildElement(new javax.xml.namespace.QName("request"));
        SOAPElement MonCode=GetParamter.addChildElement(new javax.xml.namespace.QName("http://newsite/mon", "MonCode"));
        MonCode.addTextNode("Latency");
 
        SOAPElement TimeFrom=GetParamter.addChildElement(new javax.xml.namespace.QName("http://newsite/mon", "TimeFrom"));
        TimeFrom.addTextNode("2016-10-26T11:00");
 
        SOAPElement TimeTo=GetParamter.addChildElement(new javax.xml.namespace.QName("http://newsite/mon", "TimeTo"));
        TimeTo.addTextNode("2016-10-26T12:00");
результат SOAP такой

XML
1
2
3
4
5
6
7
8
9
10
11
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header/>
<SOAP-ENV:Body>
<GetParamter xmlns="http://examples/2001">
<request>
<MonCode xmlns="http://newsite/mon">Latency</MonCode>
<TimeFrom xmlns="http://newsite/mon">2016-10-26T11:00</TimeFrom>
<TimeTo xmlns="http://newsite/mon">2016-10-26T12:00</TimeTo>
</request>
</GetParamter>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
НО осталось еще несколько вопросов :-)

- как добавить?
XML
1
<?xml version="1.0" encoding="UTF-8" ?>
- и как избавиться от приставки "-ENV" и тега HEAD?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2016, 12:11
Привет! Вот еще темы с ответами:

Обработка ответа на SOAP-запрос - PHP
Сейчас разбираюсь с SOAP, разобрался как посылать эти запросы, а что делать с ответами ума не приложу, приходит в ответ портянка: ...

Эмулировать XML SOAP запрос - PHP
Здравствуйте! Поставили задачу: Имея WSDL файл, запрос к нему и ответ, сохраняя формат отправляемых и получаемых данных, эмулировать...

Soap запрос и CLR сборка - C# WCF
Добрый день! Столкнулась с очень специфической проблемой: в sql запросе формируется сообщение для отправки в soap-запросе. В запросе...

Как отправить SOAP запрос - Python
Как отправить с помощью питона SOAP запрос? (ниже показано, что конкретно надо отправить) Читал и пробовал библиотеки SUDS и SOAPpy, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru