Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
ВнизРабота с Вебсервисами с помощью Delphi2009 Найти похожие ветки
← →
Phoenix © (2011-09-30 10:26) [0]Доброго времени суток уважаемые. У меня возникла необходимость обратиться к вебсервису через делфи. Нашёл соответствующие примеры. Сгенерировал с 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". Понять не могу отчего и почему и как её поправить. Прощу помочь разобраться с проблемой.
← →
Плохиш © (2011-09-30 12:35) [1]При импортировании wsdl можно поставить галочку для создания класса доступа к веб-сервису. Вот и используй созданный класс.
← →
Phoenix © (2011-10-04 08:39) [2]Снова поднимаю тему. Итак я накидал клиент и решил прошлую проблему. Обращаюсь к веб-сервису через сгенерированный метод и получаю следующий запрос:
<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>
Отсюда вопрос - учитывая что запрос генериться автоматически на основе сгенерированных классов, как привести его к правильному виду? Возможно при генерации надо указать некие параметры?
Заранее благодарен.
← →
Cobalt © (2011-10-04 10:07) [3]или они врут, или ошибаются.
невалидный xml-же
пущщай тебе скинут текст реального запроса, это раз.
и пущай они скажут тебе, как правильно генерить запрос.
← →
имя (2011-10-04 10:24) [4]Удалено модератором
← →
Phoenix © (2011-10-05 07:41) [5]Нашёл такую же проблему как и у меня с соответсвующим решением http://stackoverflow.com/questions/4154585/removing-the-namespace-from-soap-request Но возник один вопрос - как по ссылке сказанно, переопределил метод ObjectToSOAP. Вроде как в теории при обращении к данному методу текст xml должен был обработатся и прийти в нужный мне вид. Теперь возник другой вопрос - как и когда вызывать этот самый метод? ТАм куча входящих параметров и где их брать - непонятно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c