⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 productservice_wadimpl.~pas

📁 delphi实现 webservice的例子.有服务端和客户段 利用xml交互.
💻 ~PAS
字号:
{ Invokable implementation File for TProductService_WAD which implements IProductService_WAD }

unit ProductService_WADImpl;

interface

uses InvokeRegistry, Types, XSBuiltIns,DataServer,dm,DBClient,ProductBinding,
ProductService_WADIntf, SysUtils,imageinfo;

type
  { TProductService_WAD }
  TProductService_WAD = class(TInvokableClass, IProductService_WAD)
  public
     function GetProductByDate(Xmldata:WideString):WideString;stdcall;
     function GetProduct(Xmldata:Widestring):WideString;stdcall;
     function UpdateProduct(Xmldata:Widestring):WideString;stdcall;
     Function Login(Xmldata:WideString):Widestring;stdcall;
     function GetProductImage(Xmldata:WideString):WideString;stdcall;
     function PostProductImage(Xmldata:WideString):WideString;stdcall;
  end;

implementation
  Function TProductService_WAD.GetProduct(Xmldata:Widestring):WideString;
   var
    Ds :IDataServer;
    cds:Tclientdataset;
    data:OleVariant;
    pid:string;
   begin
     try
       pid:=GetPidFromRequest(Xmldata);
       except on E:Exception do
          Result :=CreateMsgXml(ProductGetRequestNode,'0',e.Message);
         end;
     cds :=Tclientdataset.Create(nil);
     ds :=TDataModule_U.Create(nil);
     data := ds.GetProduct(pid);
      if(Length(data)>0) then
     begin
      cds.data :=data;
      Result :=CreateProductsXML64(cds,ProductGetRequestNode,'');
     end else
     Result :=CreateMsgXml(ProductGetRequestNode,'0',DBError01);    //返回一个xml文本
     cds.Free;
   end;
   function TProductService_WAD.UpdateProduct(Xmldata:Widestring):WideString;
   var
     xmlproduct :TXmlProductType;
     Ds :IDataServer;
     isSuccess:integer;
   begin
     try
       xmlproduct :=ReadProductFromXml(Xmldata);

     try
        ds :=TDataModule_U.Create(nil);
        isSuccess :=ds.UpdateProduct(xmlproduct);
        if(isSuccess>0) then
         Result :=CreateMsgXml(ProductUpdateRequestNode,'1',SuccessMsg)
        else
         Result :=CreateMsgXml(ProductUpdateRequestNode,'0','没有可更新的记录');
      except on E:Exception do
          Result :=CreateMsgXml(ProductUpdateRequestNode,'0',e.Message);
       end;
      except on E:Exception do
          Result :=CreateMsgXml(ProductUpdateRequestNode,'0',e.Message);
       end;
   end;
   
   function TProductService_WAD.GetProductByDate(Xmldata:WideString):WideString;
   var
     datetype :TDateType;
     Ds :IDataServer;
     data :Variant;
     cds :Tclientdataset;
   begin
     try
       datetype:=GetDateType(Xmldata);
     except on e:Exception do
       raise  Exception.Create(e.Message);
     end;
     try
        ds :=TDataModule_U.Create(nil);
        data:=Ds.GetProductsByDate(datetype);
       if(Length(data)>0) then
       begin
         cds :=tclientdataset.Create(nil);
         cds.data :=data;
         Result :=CreateProductsXML64(cds,GetGroductByDateRequestNode,'');

         end
       else
         Result :=CreateMsgXml(GetProductByDateResponseNode,'0',DBError01)
      except on E:Exception do
          Result :=CreateMsgXml(GetProductByDateResponseNode,'0',e.Message);
       end;
 
   end;

  Function TProductService_WAD.Login(Xmldata:WideString):WideString;
   var
    user:Tuser;
    ds:IDataServer;
  begin
     user :=GetUserInfoXml(Xmldata);
     ds :=TDataModule_U.Create(nil);
     if ds.Login(user.UserID,user.PassWord) then
      Result :=CreateMsgXml(LoginResponseNode,'1',SuccessMsg,True)
     else
      Result :=CreateMsgXml(LoginResponseNode,'0',UserError,False);
  end;
  function TProductService_WAD.GetProductImage(Xmldata:WideString):WideString;
   var
     imageinfo:Timageinfo;
     ds:IDataServer;
  begin
    try
     imageinfo :=GetPictureFromXml(xmldata);
    except on e:Exception do
       raise  Exception.Create(e.Message);
     end;
     try
        ds :=TDataModule_U.Create(nil);
        imageinfo:=ds.getproductimage(imageinfo.Pid,imageinfo.LabelCode);
       if(Length(imageinfo.ImageStr)>0) then
       begin
        Result := CreatePictureXml(imageinfo,'1',SuccessMsg);
       end
       else
         Result :=CreateMsgXml(GetProductByDateResponseNode,'0',DBError01)
      except on E:Exception do
          Result :=CreateMsgXml(GetProductByDateResponseNode,'0',e.Message);
       end;

  end;
  function TProductService_WAD.PostProductImage(Xmldata:WideString):WideString;
   var
     imageinfo:Timageinfo;
     ds:IDataServer;
  begin
    try
     imageinfo :=GetPictureFromXml(xmldata);
     if imageinfo=nil then raise Exception.Create(ErrorByXml01);

      try
        ds :=TDataModule_U.Create(nil);
       if(ds.postProductImage(imageinfo)>0) then
       begin
        Result := CreateMsgXml(PostProductImageResponsNode,'1',SuccessMsg);
       end
       else
         Result :=CreateMsgXml(PostProductImageResponsNode,'0',DBError01)
      except on E:Exception do
          Result :=CreateMsgXml(PostProductImageResponsNode,'0',e.Message);
       end;
    except on e:Exception do
       Result :=CreateMsgXml(PostProductImageResponsNode,'0',e.Message);
     end;
  end;
initialization
  { Invokable classes must be registered }
  InvRegistry.RegisterInvokableClass(TProductService_WAD);

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -