![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с Вебсервисами с помощью 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 можно поставить галочку для создания класса доступа к веб-сервису. Вот и используй созданный класс.