Текущее время: Вт, июл 22 2025, 21:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 06:34 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, сен 19 2011, 08:08
Сообщения: 5
Здравствуйте! Мне необходимо вызвать внешний web-сервис из ABAP программы.
При этом необходимо передать параметры: логин и пароль для доступа к сервису.
Как реализоватеть данную задачу?

написал программу для вызова существующего сервиса http://www.webservicex.net/globalweather.asmx?WSDL
через cl_http_client=>create_by_url. Всё успешно работает

Код программы такой
PARAMETERS : p_cnt TYPE t005t-landx .

*&---------------------------------------------------------------------*
*& Types and Data
*&---------------------------------------------------------------------*
DATA: http_client TYPE REF TO if_http_client ,
http_url TYPE string ,
p_content TYPE string .

*&---------------------------------------------------------------------*
*& Start of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION .

*Build the url string based on input
CONCATENATE 'http://www.webservicex.net/globalweather.asmx'
'/GetCitiesByCountry?CountryName='
p_cnt
INTO http_url .



* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = http_url
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.

http_client->request->set_header_field( name = '~request_method'
value = 'GET' ).
* Send the request
http_client->send( ).

* Reterive the result
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.

p_content = http_client->response->get_cdata( ).
REPLACE ALL OCCURRENCES OF '&lt;' IN p_content WITH '<' .
REPLACE ALL OCCURRENCES OF '&gt;' IN p_content WITH '>' .

*&---------------------------------------------------------------------*
*& Processing the string
*&---------------------------------------------------------------------*
DATA : moff TYPE syst-tabix ,
moff1 TYPE syst-tabix ,
len TYPE syst-tabix .

DO .
FIND '<City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff .
IF sy-subrc = 0 .
moff = moff + 6 .
FIND '</City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff1 .
len = moff1 - moff .
WRITE : / p_content+moff(len) .
ELSE.
EXIT.
ENDIF.

ENDDO .

Вопрос как вызвать сервис, который требует ввода логина и пароля ??
Всем спасибо


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 06:39 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, фев 17 2006, 07:38
Сообщения: 99
У класса CL_HTTP_CLIENT есть метод AUTHENTICATE, попробуйте использовать его.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 07:28 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, сен 19 2011, 08:08
Сообщения: 5
А есть ли пример использования ?!! Я понимаю, что необходимо копать в сторону AUTHENTICATE


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 08:16 
Специалист
Специалист

Зарегистрирован:
Ср, дек 22 2010, 19:49
Сообщения: 114
Maxpa написал(а):
А есть ли пример использования ?!! Я понимаю, что необходимо копать в сторону AUTHENTICATE

Посм. программу RSICFCLTST01


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 09:12 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, фев 17 2006, 07:38
Сообщения: 99
Maxpa написал(а):
А есть ли пример использования ?!! Я понимаю, что необходимо копать в сторону AUTHENTICATE

Перед вызовом http_client->send( ) вставте вызов http_client->authenticate( username = 'IVANOV' password = '123qwe' ). Это всего лишь заполнение заголовока http запроса.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 09:16 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 25 2008, 07:49
Сообщения: 34
Откуда: Архангельск
Пол: Мужской
Добрый день,
мы с внешними сервисами работаем иначе.

1. на основе wsdl-описания генерируем класс customer proxy.
2. конфигурируем логический порт через soamanager - здесь при необходимости можно указать внешнее имя пользователя и пароль для доступа к сервису.
3. в программе создаем экземпляр объекта сгенерированного класса, работаем с его методами.

P.S. Так у нас реализована связь SAP ERP 605 -> MS Sharepoint.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Вт, авг 07 2012, 13:01 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, сен 19 2011, 08:08
Сообщения: 5
A&P написал:
Добрый день,
мы с внешними сервисами работаем иначе.

1. на основе wsdl-описания генерируем класс customer proxy.
2. конфигурируем логический порт через soamanager - здесь при необходимости можно указать внешнее имя пользователя и пароль для доступа к сервису.
3. в программе создаем экземпляр объекта сгенерированного класса, работаем с его методами.

P.S. Так у нас реализована связь SAP ERP 605 -> MS Sharepoint.



А если мне надо передать в сервис таблицу, как быть ??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Ср, авг 08 2012, 08:27 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 25 2008, 07:49
Сообщения: 34
Откуда: Архангельск
Пол: Мужской
Доброе утро,

для системы большой разницы нет, что передавать - одно поле, структуру или таблицу, в конечном итоге все трансформируется в XML для обмена по протоколу SOAP.
Вы же понимаете, что при создании прокси сервиса по данным WSDL-описания система генерирует не только класс с методами, но и необходимые объекты ABAP-словаря, а также трансформации ABAP<->XML.
Попробуйте сгенерировать "сервис:клиент" (consumer proxy), и посмотрите интересующий Вас метод на закладке Internal View для выяснения типов данных, с которыми нужно будет работать. В программе нужно только правильно заполнить содержимым часть, соответствующую input message.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как вызвать web service, требующий логин и пароль из абап программы
СообщениеДобавлено: Ср, авг 08 2012, 10:04 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, сен 19 2011, 08:08
Сообщения: 5
A&P написал:
Доброе утро,

для системы большой разницы нет, что передавать - одно поле, структуру или таблицу, в конечном итоге все трансформируется в XML для обмена по протоколу SOAP.
Вы же понимаете, что при создании прокси сервиса по данным WSDL-описания система генерирует не только класс с методами, но и необходимые объекты ABAP-словаря, а также трансформации ABAP<->XML.
Попробуйте сгенерировать "сервис:клиент" (consumer proxy), и посмотрите интересующий Вас метод на закладке Internal View для выяснения типов данных, с которыми нужно будет работать. В программе нужно только правильно заполнить содержимым часть, соответствующую input message.


Добрый день

Я создал прокси-клиента. Создавал прокси-клиента загружая WSDL файл со своего ПК. Всё создалось без ошибок. Тестировать не получается.
Пытаюсь создать логический порт через soa manager вылетают ошибки
Error when building binding view: Uninstantiated object "subject sidl service" in method IF_SRT_WSP_CONFIG_SIDL~CREATE_CLNT_CFG_FROM_WSDL_D of class CL_SRT_WSP_CONFIG_SIDL

для доступа к WSDL я загружаю его локально.

Подскажите, пожалуйста, что я не так делаю


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

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


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

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


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

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