Текущее время: Сб, июн 28 2025, 04:24

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Пн, ноя 16 2015, 13:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, май 23 2012, 14:38
Сообщения: 30
Пол: Мужской
Добрый день, коллеги!

Возникла потребность реализации взаимодействия с web-сервисом по протоколу SOAP.
SAP у нас версии 4.6, поэтому создать клиент в SE80 нет возможности (или я не там смотрю?), вероятно, придется писать клиент в ручную, благо операций на сервере всего две.
Пока думаю над использованием класса cl_http_client.
Буду благодарен за любые подсказки, примеры, ссылки.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Вт, ноя 17 2015, 12:17 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, май 23 2012, 14:38
Сообщения: 30
Пол: Мужской
Класса cl_http_client и интрефейса if_http_client в версии 4.6 тоже не оказалось.
Остается только ФМ HTTP_POST.
Есть несколько вопросов по работе с ним.

В него передаются URI
ABSOLUTE_URI
и таблицы с заголовками и телами запросов и ответов:
REQUEST_ENTITY_BODY
RESPONSE_ENTITY_BODY
RESPONSE_HEADERS
REQUEST_HEADERS

HTTP Запрос SOAP выглядит, например, так:

Code:
POST /TimeTable/Service.asmx HTTP/1.1
Host: 86.57.245.235
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservices.belavia.by/GetAirportsList"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetAirportsList xmlns="http://webservices.belavia.by/">
      <Language>ru</Language>
    </GetAirportsList>
  </soap:Body>
</soap:Envelope>


В URI, по идее, нужно передавать 'http://86.57.245.235/TimeTable/Service.asmx'

Вопросы:
1. Что в данном случае писать в REQUEST_HEADERS и REQUEST_ENTITY_BODY?
2. Как посмотреть, что в итоге отправилось на сервис?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Ср, ноя 18 2015, 05:03 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
its_andrusha написал:
Host: 86.57.245.235
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservices.belavia.by/GetAirportsList"

Это заголовки сообщения

its_andrusha написал:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetAirportsList xmlns="http://webservices.belavia.by/">
<Language>ru</Language>
</GetAirportsList>
</soap:Body>
</soap:Envelope>

Это тело сообщения.

Как правило заголовки Host: ххх и Content-Length: ххх не надо задавать явно. Логичнее передать размер сообщения через REQUEST_ENTITY_BODY_LENGTH. На уровне протокола в длине сообщения размер указывается в байтах, поэтому я бы попробовал тело сообщения преобразовать к двоичным данным (а, кстати, у вас система юникод?) и указать размер сообщения в байтах. Имя хоста должно добавиться автоматически. Т.е. явным образом в заголовки нужно добавить Content-Type: ххх и SOAPAction:ххх

На выходе нужно посмотреть значение параметра STATUS_CODE, если 200 - все нормально, если нет что-то не так. STATUS_TEXT - краткое описание ошибки если она будет, или что-то вроде Ok если всё хорошо. Результат будет в RESPONSE_ENTITY_BODY (скорее всего нужно будет преобразовывать из бинарных данных в текст) либо там же может быть более подробная информацияоб ошибке.

По второму вопросу - в более новых системах есть такая штука как http-трассировка, там можно что-то увидеть. В вашей системе может не быть, может имеет смысл заглянуть в smicm, но я не уверен. Либо с помощью базиса помониторить сетевую активность на уровне ОС.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Чт, ноя 19 2015, 14:07 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, май 23 2012, 14:38
Сообщения: 30
Пол: Мужской
AFH, спасибо за подробные рекомендации!
К сожалению, применить их на практике пока возможности нет из-за проблем с безопасностью. :( Она запрещает отправлять данные с сервера.

Может есть какая-нибудь возможность обмениваться сообщениями с сервисом с локальной машины?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Пт, ноя 20 2015, 04:49 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
its_andrusha написал:
Может есть какая-нибудь возможность обмениваться сообщениями с сервисом с локальной машины?

Это будет временное решение или постоянное? Если временное, то вариантов довольно много. Если нужно постоянное решение, которое бы работало у любого пользователя - сложнее будет (а может и нерешаемо), да и вообще костыли.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обращение к WEB-сервису из R/3 версии 4.6C по протоколу SOAP
СообщениеДобавлено: Вс, ноя 22 2015, 10:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
its_andrusha написал:
Может есть какая-нибудь возможность обмениваться сообщениями с сервисом с локальной машины?

Посмотрите группу функций SCMS_HTTP2

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB