Текущее время: Вс, июн 29 2025, 22:29

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Работа с внешним веб-сервером
СообщениеДобавлено: Чт, окт 09 2014, 17:00 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
Добрый день!
Пытаюсь организовать работу с внешним веб-сервером по следующему принципу
"
1. на основе wsdl-описания генерируем класс customer proxy.
2. конфигурируем логический порт через soamanager - здесь при необходимости можно указать внешнее имя пользователя и пароль для доступа к сервису.
3. в программе создаем экземпляр объекта сгенерированного класса, работаем с его методами.
"

Я сгенерировал класс customer proxy на основе wsdl-описания через se80
Сконфигурировал логический порт через soamanager. Пропинговал его, работает.
Далее через se80 пытаюсь протестировать класс и возникает ошибка.
"
SoapFaultCode:4 Exception occurred while executing service 'as_ppvd'.
Исключение класса CX_AI_SOAP_FAULT
"

Не могу понять что за ошибка. Так же я не понимаю куда при конфигурации логического порта вставлять имя пользователя и пароль для доступа к сервису.(может ошибка из-за этого). Перепробовал все варианты методом тыка, но ничего не меняется.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером
СообщениеДобавлено: Пт, окт 10 2014, 06:24 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Чтобы в логическом порту можно было указать логин\пароль для доступа к сервису (например с помощью BASIC-аутентификации) прокси в абап системе должен быть сгенерирован с определенными параметрами безопасности - поищите в абап части настройки аутентификации.

Приведите код который вызывает эту ошибку.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером
СообщениеДобавлено: Пт, окт 10 2014, 12:52 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
Через транзакцию se80 пытаюсь протестировать класс customer proxy.
Изображение
Делаю конфигурацию теста. Подключаю логический порт.
Изображение
И возникает ошибка после того как я запускаю тест со стандартным запросом.
Изображение
Перед этим на SOAPUI проверил веб-сервис с присланным мне запрос от создателя веб-сервера. Все работает, данные появляются.
Изображение
Попытался поменять запросы во время теста класс, возникает другая ошибка.
Изображение
Может, что-то я делаю не так? С самим сапом я работаю почти первый раз. И данный веб сервис организовываю по инструкциям вычитанным в интернете.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером
СообщениеДобавлено: Ср, окт 15 2014, 10:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
судя по сообщ. возможно, что-то не так с тэгом tab:as,
может обязательность выставлена или что-то подобное

грохните его в типе и проверьте


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером
СообщениеДобавлено: Ср, окт 15 2014, 15:15 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
trop написал(а):
судя по сообщ. возможно, что-то не так с тэгом tab:as,
может обязательность выставлена или что-то подобное

грохните его в типе и проверьте

Спасибо за помощь, но это не помогло


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером
СообщениеДобавлено: Чт, окт 16 2014, 05:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
в wsdl удаляли?
когда такое происходит обычно дело в какой то мелочи,
попросите когонить незамыленным взглядом посмотреть,
может кириллическая буква где-нить, посмотрите всё таки
какой тэг на позиции 793

можно в тесте войти в изменение (т т т т) и вставить туда
вместо шаблонного запрос который вам прислали


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Работа с внешним веб-сервером  Тема решена
СообщениеДобавлено: Ср, ноя 19 2014, 19:11 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
Проблему смог решить только создав собственный клиент в выполняемой программе. Вот пример

Code:
*---------------------------------------------------------------------*
*ОБЪЯВЛЕНИЕ КОНСТАНТ
*---------------------------------------------------------------------*
CONSTANTS:
       httpUrl             TYPE string  VALUE '...'     ,   "константа для хранения URL
       c_userName             TYPE string  VALUE '...'                                                ,   "константа для имени
       c_userPassword         TYPE string  VALUE '..'                                                .   "константа для пароля

*---------------------------------------------------------------------*
*ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
*---------------------------------------------------------------------*
DATA:
       v_httpClient           TYPE REF TO if_http_client                                                    ,   "переменная для клиента                                                              ,   "
       v_soapRequest          TYPE string                                                                   ,   "переменная для хранения запроса
       vi_result              TYPE string                                                                   ,   "переменная для получения данных
       v_soapRequestLength    TYPE I                                                                        .   "переменная для хранения размера запроса


*---------------------------------------------------------------------*
*СОЗДАНИЕ ЗАПРОСА
*---------------------------------------------------------------------*

CONCATENATE
        '<soapenv:Envelope ...
            '<soapenv:Header>'
                '<wsse:Security> '
                    '<wsse:UsernameToken> '
                        '<wsse:Username>'
                          c_userName
                        '</wsse:Username>'
                        '<wsse:Password>'
                          c_userPassword
                        '</wsse:Password> '
                    '</wsse:UsernameToken>'
                '</wsse:Security>'
            '</soapenv:Header>'
            '<soapenv:Body>'
                '<as:aS_PPVD>'
                    '<as:parameters>'
                        '<!--Optional:-->'
                        '<as:M>06</as:M>'
                        '<!--Optional:-->'
                        '<as:Y>2014</as:Y>'
                    '</as:parameters>'
                    '<tab:as xmlns:tab=... '
                '</as:aS_PPVD>'
            '</soapenv:Body>'
        '</soapenv:Envelope>'
INTO v_soapRequest.

* Создание нового объекта IF_HTTP_Client

  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = httpURL
    IMPORTING
      client             = v_httpClient
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.

* Отправляем параметр для "URL Access Path"

  CALL METHOD v_httpClient->request->set_header_field
    EXPORTING
          name  = '~request_uri'
          value = '/SASBIWS/...'.

* Отправляем параметр для "Accept"

   CALL METHOD v_httpClient->request->set_header_field
    EXPORTING
          name = 'Accept'
          value = 'text/xml, text/html'.

* Отправляем параметр для "SOAPAction"

  CALL METHOD v_httpClient->request->set_header_field
    EXPORTING
          name  = 'SOAPAction'
          VALUE = 'http://.../aS_PPVD'.

* Находим размера запроса

     v_soapRequestLength = STRLEN( v_soapRequest ).

* Записываем запрос в клиент
    CALL METHOD v_httpClient->request->set_cdata
    EXPORTING
          DATA   = v_soapRequest
          offset = 0
          length = v_soapRequestLength.

* Отправляем запрос

   CALL METHOD v_httpClient->send
    EXCEPTIONS
          http_communication_failure = 1
          http_invalid_state         = 2.

* Получаем результат

  CALL METHOD v_httpClient->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      OTHERS                     = 4.

* Получаем данные

  vi_result = v_httpClient->response->get_cdata( ).


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

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


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

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


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

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