Текущее время: Чт, июн 26 2025, 12:56

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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