Всем доброго времени суток! Впервые работаю с abap proxy, поэтому не закидывайте сразу камнями... Создала прокси клиент из WSDL-файла, логический порт к нему в soamanager. Тест нормально работает. Теперь обращаюсь к сервису из ABAP-программы:
Code:
REPORT ZSPARK_TEST.
data: lo_proxy type ref to ZDKPCO_I_FAX_WEB_SERVICE_SOAP,
ls_in_auth type ZDKPAUTHMETHOD_SOAP_IN,
ls_out_auth type ZDKPAUTHMETHOD_SOAP_OUT,
ls_in_region type ZDKPGET_LIST_REGION_SOAP_IN,
ls_out_region type ZDKPGET_LIST_REGION_SOAP_OUT.
create object lo_proxy
exporting
logical_port_name = 'SPARKPORT'.
ls_in_auth-login = 'login'.
ls_in_auth-password = 'password'.
TRY.
CALL METHOD lo_proxy->authmethod
EXPORTING
input = ls_in_auth
IMPORTING
output = ls_out_auth
.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.
TRY.
CALL METHOD lo_proxy->get_list_region
EXPORTING
input = ls_in_region
IMPORTING
output = ls_out_region
.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.
Проблема в том, что авторизация здесь через отдельный метод - authmethod. Он возвращает True и, вероятно, какие-то Cookies. Но при вызове следующего метода получаю ошибку авторизации - видимо, cookies дальше не передаются...
Собственно, в сторону cookies стала копать из-за того, что в Demo-клиенте используемого сервиса предоставлен такой исходный код на C# для вызова метода:
Code:
string result;
string resultXml;
using (ifaxWSReference.iFaxWebService service = new ifaxWSReference.iFaxWebService())
{
service.Url = "http://sparkgatetest.interfax.ru/IfaxWebService/ifaxwebservice.asmx";
service.CookieContainer = new System.Net.CookieContainer();
result = service.Authmethod("Ваш логин", "Ваш пароль");
result = service.GetListRegion(out resultXml);
service.End();
}
Console.WriteLine("Результат: " + result);
Console.WriteLine("Результат XML: " + resultXml);
Подскажите, можно ли как-то указать abap proxy передавать cookies? Или, может, куда-то в другую сторону нужно копать?