Текущее время: Чт, июл 03 2025, 08:35

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


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

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


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

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