Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2009, 13:26   #1
1datr
Пользователь
 
Регистрация: 04.03.2008
Сообщений: 16
По умолчанию Трабл при SOAP-запросах по таймеру

Делаешь по таймеру SOAP-запрос. Выходит еррор:

Conversion from class TTimer to SOAP is not supported. SOAP classes must derive from TRemotable.

При том, что из формы SOAP вызывается нормально. Как быть?
Вот код клиента:

Код:
// ************************************************************************ // 
// The types declared in this file were generated from data read from the 
// WSDL File described below: 
// WSDL     : http://localhost/xml/users.php?wsdl 
// Encoding : ISO-8859-1 
// Version  : 1.0 
// (02.10.2009 21:02:55 - 1.33.2.5) 
// ************************************************************************ // 
 
unit users; 
 
interface 
 
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; 
 
type 
 
  // ************************************************************************ // 
  // The following types, referred to in the WSDL document are not being represented 
  // in this file. They are either aliases[@] of other types represented or were referred 
  // to but never[!] declared in the document. The types from the latter category 
  // typically map to predefined/known XML or Borland types; however, they could also  
  // indicate incorrect WSDL documents that failed to declare or import a schema type. 
  // ************************************************************************ // 
  // !:int             - "http://www.w3.org/2001/XMLSchema" 
  // !:string          - "http://www.w3.org/2001/XMLSchema" 
 
  UserListData         = class;                 { "urn:userswsdl" } 
  UserType             = class;                 { "urn:userswsdl" } 
 
 
 
  // ************************************************************************ // 
  // Namespace : urn:userswsdl 
  // ************************************************************************ // 
  UserListData = class(TRemotable) 
  private 
    Fgroup_id: Integer; 
    Fsess_id: WideString; 
  published 
    property group_id: Integer read Fgroup_id write Fgroup_id; 
    property sess_id: WideString read Fsess_id write Fsess_id; 
  end; 
 
 
 
  // ************************************************************************ // 
  // Namespace : urn:userswsdl 
  // ************************************************************************ // 
  UserType = class(TRemotable) 
  private 
    Fid: Integer; 
    Fnick: WideString; 
  published 
    property id: Integer read Fid write Fid; 
    property nick: WideString read Fnick write Fnick; 
  end; 
 
  ArrayOfUsersType = array of UserType;         { "urn:userswsdl" } 
 
  // ************************************************************************ // 
  // Namespace : urn:userswsdl 
  // soapAction: urn:userswsdl#userlist 
  // transport : http://schemas.xmlsoap.org/soap/http 
  // style     : rpc 
  // binding   : userswsdlBinding 
  // service   : userswsdl 
  // port      : userswsdlPort 
  // URL       : http://localhost/xml/users.php 
  // ************************************************************************ // 
  userswsdlPortType = interface(IInvokable) 
  ['{764CD106-2F61-B282-2A06-50EB9C85D82A}'] 
    function  userlist(const params: UserListData): ArrayOfUsersType; stdcall; 
  end; 
 
function GetuserswsdlPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): userswsdlPortType; 
 
 
implementation 
 
uses CommonData; 
 
function GetuserswsdlPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): userswsdlPortType; 
const 
  defSvc  = 'userswsdl'; 
  defPrt  = 'userswsdlPort'; 
var 
  RIO: THTTPRIO; 
  cfg : TConfigData; 
  defURL : String; 
  defWSDL : String; 
begin 
  AppCommonData.GetConfigParams(cfg); 
  defWSDL:=cfg.server+'/xml/users.php?wsdl'; 
  defURL:=cfg.server+'/xml/users.php'; 
  Result := nil; 
  if (Addr = '') then 
  begin 
    if UseWSDL then 
      Addr := defWSDL 
    else 
      Addr := defURL; 
  end; 
  if HTTPRIO = nil then 
    RIO := THTTPRIO.Create(nil) 
  else 
    RIO := HTTPRIO; 
  try 
    Result := (RIO as userswsdlPortType); 
    if UseWSDL then 
    begin 
      RIO.WSDLLocation := Addr; 
      RIO.Service := defSvc; 
      RIO.Port := defPrt; 
    end else 
      RIO.URL := Addr; 
  finally 
    if (Result = nil) and (HTTPRIO = nil) then 
      RIO.Free; 
  end; 
end; 
 
 
initialization 
  InvRegistry.RegisterInterface(TypeInfo(userswsdlPortType), 'urn:userswsdl', 'ISO-8859-1'); 
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(userswsdlPortType), 'urn:userswsdl#userlist'); 
  RemClassRegistry.RegisterXSClass(UserListData, 'urn:userswsdl', 'UserListData'); 
  RemClassRegistry.RegisterXSClass(UserType, 'urn:userswsdl', 'UserType'); 
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfUsersType), 'urn:userswsdl', 'ArrayOfUsersType'); 
 
end.
1datr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пустые поля в запросах PetroPorsh Microsoft Office Access 1 16.10.2008 16:56
soap wsdl nimf Общие вопросы Delphi 0 22.08.2008 16:10
MS SQL server 2000, ADO. Добавленые записи не отображаются при последующих запросах. _victor БД в Delphi 1 17.06.2007 13:33
Возможна ли рекурсия в запросах eremin БД в Delphi 0 23.05.2007 15:54