Page 1 of 3 1 2 3 LastLast
Results 1 to 15 of 31

Thread: Webservice client

  1. #1
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773

    Webservice client

    Hallo allemaal,

    het is alweer een tijdje geleden , maar ik waag me weer aan D8 (eindelijk).

    Voor school moet ik een: "windows client applicatie, die ...."
    deze client moet kunnen communiceren met een webservice (die volgens mij geschreven is in ASP.net).

    De volgende interface heb ik van de server-programmeur gekregen:
    De interface:

    Code:
    /**
     * Get a DataSet object of all available products
     */
    
    [WebMethod] public Product GetProducts();
    
    /**
     * Get the product with the specified name
     */
    
    [WebMethod] public Product GetProduct(String name);
    
     /**
     * Get a DataSet object of all registered customers
     */
    
    [WebMethod] public Customer GetCustomers();
    
     /**
     * Get customer with specified name
     * @param name The name of the customer to select
     * @return The customer
     */
    
    [WebMethod] public Customer GetCustomer(String name);
    
    /**
     * Add a new Customer
     * @param  name     The name of the new customer
     * @param  address  The address of the new customer
     * @param  city     The city of the new customer
     * @param  zipcode  The zipcode of the new customer
     * @return The number of rows affected, -1 when an error has occured
     */        
    
    [WebMethod] public int AddCustomer(String name, String address, String city, String zipcode);
    
    /**
     * Delete customer with specified name
     * @param name The name of the customer to delete
     * @return The number of rows affected, -1 when an error has occured
     */
    
    [WebMethod] public int RemoveCustomer(String name);
    
    /**
     * Order a product
     * @param cus_id   ID of the customer
     * @param prod_id  ID of the desired product
     * @param amount   The desired amount of the specified product
     * @return The number of rows affected, -1 when an error has occured
     */
    
    [WebMethod] public int OrderProduct(String cusName, String prodName, int amount);
    
    /**
     * Get The bill of all the ordered products
     * @param   cusName  The name of the customer
     * @return  The bill
     */
    
    [WebMethod] public String GetBill(String cusName); 
    
    /**
     * Checkout en get the bill
     * @param cusName   The name of the customer
     * @return  The bill
     */
    [WebMethod] public String CheckOut(String cusName);
    In java werden er stub-classes gegenereerd of via UDDI, methodes aangeroepen. Hoe moet ik dit in delphi doen?
    Ik hoop dat dit duidelijk is, want dit is ook allemaal nieuw voor mij.

    Groeten Erik

    [edit]
    ik heb de downloadversie van delphi 8

    - en ik heb wat gelezen over importeren van WSDL-files, maar dat ging over D7 en eerdere versies, waar kan ik dat nu vinden?
    [/edit]
    Last edited by eriksk; 03-Apr-04 at 14:24.

  2. #2
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Wat bedoel je met de 'downloadversie': de trial versie?

    1) Project->Add Web Reference
    2) Navigeer naar het web service description document
    3) Pas eventueel de web reference folder name aan
    4) Klik Add reference
    5) Viola
    All methodologies are based on fear. -- Kent Beck.

  3. #3
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    downloadversie = trial versie ja...

    ik heb het nu netjes gedaan, maar ik krijg allerlei fouten tijdens het compilen. Moest twee units toevoegen, omdat er objecten werden meegegeven. Maar de rest zijn behoorlijk vaag. Zoals op de volgende:
    Code:
    [assembly: RuntimeRequired(TypeOf(Customer))]
    
    [assembly: RuntimeRequired(TypeOf(Product))]
    deze meldingen:
    [Error] WebReference.WarehouseService.pas(370): '.' expected but ')' found
    [Error] WebReference.WarehouseService.pas(372): '.' expected but ')' found

    ik heb er niets verder aan gedaan.

    Of de volgende:
    Code:
    function WarehouseService.GetProducts: Product;
    type
      TArrayOfSystem_Object = array of System.Object;
    var
      results: TArrayOfSystem_Object;
    begin
      results := Self.Invoke('GetProducts', New(TArrayOfSystem_Object, 0));
      Result := (Product(results[0]));
    end;
    melding:
    [Error] WebReference.WarehouseService.pas(381): '.' expected but ';' found
    [Error] WebReference.WarehouseService.pas(383): Unknown directive: 'TArrayOfSystem_Object'
    [Error] WebReference.WarehouseService.pas(383): ';' expected but '=' found
    [Error] WebReference.WarehouseService.pas(385): Undeclared identifier: 'TArrayOfSystem_Object'
    [Error] WebReference.WarehouseService.pas(387): NEW standard function expects a dynamic array type identifier

    zo raar en kan er weinig over vinden, meeste gaat over Delphi 6

    Bedankt alvast
    ÔÇ£If something can go wrong, it willÔÇØ


    "Saying that Java works on all OS's is like saying that anal sex is working on all genders"

  4. #4
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Kan je de url voor de wsdl posten of de wsdl zelf?
    All methodologies are based on fear. -- Kent Beck.

  5. #5
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773

  6. #6
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    Ik krijg alweer anderen, waarom weet ik niet:
    [Error] WebReference4.WarehouseService.pas(976): Constant or type identifier expected
    [Error] WebReference4.WarehouseService.pas(978): Missing operator or semicolon
    etc....

    gaat over het volgende stukje code:
    Code:
    function Customer.Clone: DataSet;
    var
      cln: Customer;
    begin
      cln := (Customer(inherited Clone));
      cln.InitVars;
      Result := cln;
    end;

  7. #7
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Ik heb het net geïmporteerd en krijg 2 fouten (bij de datasets): die van hierboven en een vergelijkbare bij Product.
    Ik heb ze opgelost door de volledige qualificatie te geven:
    Code:
    function Customer.Clone: DataSet;
    var
      cln: School.WarehouseService.Customer;
    begin
      cln := (School.WarehouseService.Customer(inherited Clone));
      cln.InitVars;
      Result := cln;
    end;
    Volgens mij klopt een en ander toch niet echt bij het generen van deze code.
    De variabele is niet nodig, Result kan daarvoor gebruikt worden.
    Zou dus zoiets kunnen worden:
    Code:
    function Customer.Clone: DataSet;
    begin
      Result := inherited Clone;
      School.WarehouseService.Customer(Result).InitVars;
    end;
    Let wel, ik heb niks getest, alleen gecompileerd (en ook niet echt gecontroleerd)
    All methodologies are based on fear. -- Kent Beck.

  8. #8
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    En het werkt:
    Attached Images Attached Images  
    All methodologies are based on fear. -- Kent Beck.

  9. #9
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    En ook de klanten, met name Fred Kroket en companen:
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	schoolwarehousecust.jpg 
Views:	335 
Size:	21.2 KB 
ID:	1617  
    All methodologies are based on fear. -- Kent Beck.

  10. #10
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    Dank je! Het doet het. Wel raar dat het niet goed gegenereerd wordt.
    ÔÇ£If something can go wrong, it willÔÇØ


    "Saying that Java works on all OS's is like saying that anal sex is working on all genders"

  11. #11
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    eeeej, die plaatjes, beetje snuffelen he!

    oh, als dat gemaakt is met D8 (denk t toch), kun je me de code geven.
    Ken die 'nieuwe' datasets niet. (En ik vind de help van D8 nog onduidelijk)

    Alvast bedankt

    [edit]
    ik zie het al beter, dat heb ik ook al, zocht meer een optie om de tekst er uit te halen. Maar zoek wel even beter
    [/edit]
    ÔÇ£If something can go wrong, it willÔÇØ


    "Saying that Java works on all OS's is like saying that anal sex is working on all genders"

  12. #12
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Ik denk dat ik ondertussen ook weet wat het probleem is:
    de klasse Product heeft een property product:
    Code:
    property product: productDataTable read get_product;
    en de compiler raakt daardoor wat in de war, denk ik.

    Idem voor Customer:
    Code:
        property customer: customerDataTable read get_customer;
    Ik heb de gegenereerde code voor VB bekeken en dat is (CType is een cast):
    Code:
    Public Overrides Function Clone() As DataSet
        Dim cln As Customer = CType(MyBase.Clone,Customer)
        cln.InitVars
        Return cln
    End Function
    All methodologies are based on fear. -- Kent Beck.

  13. #13
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    Ik loop nu tegen het volgende probleem aan:
    de datasets die ik terug krijg. Het werken met deze datasets gaat dus niet bepaald als onder Delphi 7.

    Zo krijg ik een dataset terug met producten. Deze producten (alleen de namen voorals nog) moeten in een combobox komen.

    Maar hoe doe ik dat?
    ÔÇ£If something can go wrong, it willÔÇØ


    "Saying that Java works on all OS's is like saying that anal sex is working on all genders"

  14. #14
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Zoiets zou het moeten doen, denk ik:

    Code:
    var
      w: WarehouseService;
    begin
      w := WarehouseService.Create;
      ComboBoxProduct.DataSource := w.GetProducts;
      ComboBoxProduct.DisplayMember := 'Product.name';
      w.Free;
    end;
    All methodologies are based on fear. -- Kent Beck.

  15. #15
    School.Free :) eriksk's Avatar
    Join Date
    Sep 2003
    Location
    - Kaapstad - Uses: Delphi 7 & Visual Studio 2003 & 2005: ASP.NET -> VB.NET
    Posts
    773
    Sorry, baal er van maar kom er nog steeds niet uit.
    Het voorbeeld hierboven is goed maar nu wil ik het volgende:
    Als ik een dataset terugkrijg, wil ik er maar een veld uit. Bijvoorbeeld de kolom 'naam' uit de eertse rij.

    Als je een tutorial geeft is ook goed, maar kan nauwelijks wat vinden...

    thnx
    ÔÇ£If something can go wrong, it willÔÇØ


    "Saying that Java works on all OS's is like saying that anal sex is working on all genders"

Page 1 of 3 1 2 3 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Webservice client en certificaten
    By TopJohn in forum WebDelphi
    Replies: 19
    Last Post: 05-Jun-08, 16:11
  2. C# webservice gebruiken in Delphi 6/7
    By Marcel in forum .NET
    Replies: 31
    Last Post: 08-Mar-04, 21:03
  3. WebService, connect Client to Database
    By Jan in forum WebDelphi
    Replies: 11
    Last Post: 02-Aug-03, 21:54
  4. NLDelphi XML client
    By Marcel in forum XML client
    Replies: 1
    Last Post: 20-May-02, 02:00

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •