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

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


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

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


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

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