Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с Вебсервисами с помощью Delphi2009 [XP]


Phoenix ©   (2011-09-30 10:26:00) 

Доброго времени суток уважаемые. У меня возникла необходимость обратиться к вебсервису через делфи. Нашёл соответствующие примеры. Сгенерировал с File -> New -> Other.-> WebServices ->WSDL Importer соответствующий файл. Создал новую форму и теперь пытаюсь обратиться к необходимой функции у вебсервиса.
Для чего создал следующую процедуру

procedure TForm1.test1;
var i:Response;
   ii:RequestIin;
   fromTm: TXSDateTime;
   sTime: TSystemTime;
   nowTime: TDateTime;
   ff:UnstrictRequestsService;
begin
 ii.GUID:='string';
 GetSystemTime(sTime);
 nowTime := SystemTimeToDateTime(sTime);
 fromTm := TXSDateTime.Create;
 fromTm.AsDateTime := nowTime;
 ii.dateMessage:=fromTm;
 ii.senderCode:='GP';
 ii.iin:='840731350739';
 ff:=person1.GetUnstrictRequestsService(false,' http://...y/person',nil);
 i:=ff.findPersonByIin(ii).;
end;
Процедуру вызываю через нажатие кнопки. (всё это сделано для тестирования, никогда раньше не работал с вебсервисами и теперь пытаюсь найти подход) . В результате выходит ошибка "Conversion from class TButton to SOAP is not supported - SOAP classes must derive from TRemotable". Понять не могу отчего и почему и как её поправить. Прощу помочь разобраться с проблемой.


Phoenix   (2011-10-05 07:41:00) [1]

Нашёл такую же проблему как и у меня с соответсвующим решением http://stackoverflow.com/questions/4154585/removing-the-namespace-from-soap-requestНо возник один вопрос - как по ссылке сказанно, переопределил метод ObjectToSOAP. Вроде как в теории при обращении к данному методу текст xml должен был обработатся и прийти в нужный мне вид. Теперь возник другой вопрос - как и когда вызывать этот самый метод? ТАм куча входящих параметров и где их брать - непонятно.


  (2011-10-04 10:24:00) [2]

Удалено модератором


Cobalt   (2011-10-04 10:07:00) [3]

или они врут, или ошибаются.
невалидный xml-же
пущщай тебе скинут текст реального запроса, это раз.
и пущай онискажут тебе, как правильно генерить запрос.


Phoenix   (2011-10-04 08:39:00) [4]

Снова поднимаю тему. Итак я накидал клиент и решил прошлую проблему. Обращаюсь к веб-сервису через сгенерированный метод и получаю следующий запрос:
<findPersonByIin xmlns=" http://webservice.request.universal.interactive.nat">
 <requestIin>
    <GUID xmlns="">string</GUID>
    <dateMessage xmlns="">2011-09-30T11:07:55.734+06:00</dateMessage>
    <senderCode xmlns="">GP</senderCode>
    <iin xmlns="">840731350739</iin>
 </requestIin>
</findPersonByIin>

При отправке этого запроса, сервер возвращает ошибку. Переговорил с ребятами которые отвечают за веб-сервис они говорят что проблема в неймспейсах и запрос должен выглядеть так:

<web:findPersonByIin xmlns:web=" http://webservice.request.universal.interactive.nat">
 <requestIin>
    <GUID>string</GUID>
    <dateMessage>2011-09-30T11:07:55.734+06:00</dateMessage>
    <senderCode>GP</senderCode>
    <iin>840731350739</iin>
 </requestIin>
</findPersonByIin>

Отсюда вопрос - учитывая что запрос генериться автоматически на основе сгенерированных классов, как привести его к правильному виду? Возможно при генерации надо указать некие параметры?
Заранее благодарен.


Плохиш   (2011-09-30 12:35:00) [5]

При импортировании wsdl можно поставить галочку для создания класса доступа к веб-сервису. Вот и используй созданный класс.


Наверх

Титульная страница Поиск, карта сайта Написать письмо