Delphi-PRAXiS
Seite 4 von 9   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webservice (https://www.delphipraxis.net/196134-webservice.html)

InschenierSB 27. Apr 2018 06:16

AW: Webservice
 
Zitat:

Zitat von TiGü (Beitrag 1400633)
Wenn du diese Parameter ausfüllen möchtest oder musst, dann musst du die jeweilige Property hinschreiben und natürlich füllen.

Guten Morgen,
ja genau diese Parameter muss ich ausfüllen, das ist ja meine Problem seit 2 Wochen, diese Parameter zu übergeben.

InschenierSB 27. Apr 2018 06:20

AW: Webservice
 
Zitat:

Zitat von TiGü (Beitrag 1400634)
Fang doch mal ganz klein an und baue dir ein Konsolenprogramm.
Tipp: Die Codevervollständigung der Delphi-IDE kannst du aufrufen, indem du den blinkenden Cursor hinter "Request." oder "Response." stellst und dann mit Strg + Leertaste aufrufst.
Dadurch siehst du die sogenannten Properties/Eigenschaften eines Objekts.
Im Response (vom Typ GetLotInfoByLotNameResponse2) sind es 38 Eigenschaften, die du abfragen und auswerten kannst.


Ja das mit den Eigenschaften wusste ich ja auch, das ist genau das Gleiche, wenn ich einen Punkt hinter das Objekt mache, dann macht er automatisch die das Fenster mit der Scroll-Bar auf. Wie gesagt genau diese Eigenschaften sind aber nicht dabei, da meckert der Compiler.

TiGü 27. Apr 2018 07:58

AW: Webservice
 
Zitat:

Zitat von InschenierSB (Beitrag 1400656)
Wie gesagt genau diese Eigenschaften sind aber nicht dabei, da meckert der Compiler.

"Hallo Meister, bei meinen Auto leuchtet die Motorkontrollleuchte, was ist daran kaputt?"

Ohne genaue Fehler- und Problembeschreibung werden wir dir hier nicht helfen können.
Man kann die Fehlermeldungen vom Compiler im kopieren und hier einfügen.

Wenn du bspw. das oben gezeigte Konsolenprogramm nicht ausprobierst, dann können wir dir hier nicht weiterhelfen.

Weil das nämlich so wie es da steht, und man die Pascal-Unit mit der Dateiendung: *.pas dem Projekt hinzufügt, definitiv kompiliert.
Die Eigenschaften der Request- und Response-Klasse sind in der Unit "Lot_1.pas" vorhanden.

InschenierSB 27. Apr 2018 09:06

AW: Webservice
 
Hallo TiGü,

ja okay also nachfolgend der Code.
Ich habe es jetzt soweit hinbekommen, dass keine Fehlermeldung mehr beim Ausführen erscheint. Jetzt fehlt mir nur noch dass die Response in einem Memo Fenster erscheint. Der ganze Schmarrn soll einfach nur in dem Fenster erscheinen wie mache ich das am besten?!
Die Eingabe Parameter akzeptiert der Server so anscheinend.
Warum hattest du mir das mit diesem SOAP Response und Request vorher aus kommentiert, da sieht man doch immer ganz schön die Anfrage des Clients in einem Memo?
Hatte das einen bestimmten Grund?
Delphi-Quellcode:
unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Soap.InvokeRegistry, Vcl.StdCtrls, Lot_1,
  Soap.Rio, Soap.SOAPHTTPClient;



type

  TForm1 = class(TForm)

    Button1: TButton;
    Request: TMemo;
    Respo: TMemo;
    Result: TMemo;
    HTTPRIO1: THTTPRIO;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
  (*  procedure HTTPRIO1AfterExecute(const MethodName: string;
      SOAPResponse: TStream);
    procedure HTTPRIO1BeforeExecute(const MethodName: string;
      SOAPRequest: TStream); *)
    procedure Button1Click(Sender: TObject);
  private
  FLot: ILot;

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;



var
  Form1: TForm1;
  sResult:string;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

 // HTTPRIO1.URL:='http://tst-rbg14:8019/Lot.svc';
   // URL := 'http://tst-rbg14:8019/Lot.svc';
    // EquipmentValidation:=True;


   //  (HTTPRIO1 as ILot).GetLotInfoByLotName(LotName);

 //if not Assigned(Response) then
 var
    LoT: ILot;
   Request: GetLotInfoByLotNameRequest2;
   Response: GetLotInfoByLotNameResponse2;
  begin
   LoT := GetILot();
   if Assigned(LoT) then
   begin
      HTTPRIO1.URL:='http://tst-rbg14:8019/Lot.svc';
     Request := GetLotInfoByLotNameRequest2.Create;
     try
       Request.CheckSlotPos := False;
       Request.EquipmentValidation := False;
       Request.LotName := 'R173419P';
       Request.ReturnBrokenWafers := True;
       Request.UseSlotPosition := False;
       Request.ToolCode := '1ELAM3';

       Response := LoT.GetLotInfoByLotName(Request);
       if Assigned(Response) then
       begin
        // Writeln(Response.Facility);
        // Writeln(Response.LotName);
        // Writeln(Response.Operation);
         // usw.
         //
         //Response.Free;
       end;
     finally
       Request.Free;
     end;
   end;
   end;
 end.
 (*
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
begin

      SoapResponse.Position:= 0;
      Respo.Lines.LoadFromStream(SoapResponse);
end;

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string;
  SOAPRequest: TStream);
begin
       SoapRequest.Position:= 0;
       Request.Lines.LoadFromStream(SoapRequest);
end; *)

TiGü 27. Apr 2018 09:21

AW: Webservice
 
Zitat:

Zitat von InschenierSB (Beitrag 1400691)
Der ganze Schmarrn soll einfach nur in dem Fenster erscheinen wie mache ich das am besten?!

Delphi-Quellcode:
Respo.Lines.Add('Facility: ' + Response.Facility);
Respo.Lines.Add('LotName: ' + Response.LotName);
Respo.Lines.Add('LotName: ' + Response.LotName);
Respo.Lines.Add('NumberOfWafers: ' + Response.NumberOfWafers.DecimalString);
Respo.Lines.Add('IsEDCRequired ' + BoolToStr(Response.IsEDCRequired, True));
Prinzip verstanden?
Bei den komplexeren Datentypen wie die Eigenschaften ActualCSA, EdcEpaEquipmentList und LotAttributes wird es natürlich schwierig mit deinem Vorwissen.

Zitat:

Zitat von InschenierSB (Beitrag 1400691)
Warum hattest du mir das mit diesem SOAP Response und Request vorher aus kommentiert, da sieht man doch immer ganz schön die Anfrage des Clients in einem Memo?

Damit du dich auf das Wesentliche konzentrierst! Außerdem hast du so nur die reinen XML-Requests - und Responses gesehen. Das nützt dir aber in der Weiterverarbeitung der Daten nichts. (Logging und Debugging ausgenommen).

InschenierSB 27. Apr 2018 09:56

AW: Webservice
 
Zitat:

Zitat von TiGü (Beitrag 1400695)
Delphi-Quellcode:
Respo.Lines.Add('Facility: ' + Response.Facility);
Respo.Lines.Add('LotName: ' + Response.LotName);
Respo.Lines.Add('LotName: ' + Response.LotName);
Respo.Lines.Add('NumberOfWafers: ' + Response.NumberOfWafers.DecimalString);
Respo.Lines.Add('IsEDCRequired ' + BoolToStr(Response.IsEDCRequired, True));
Prinzip verstanden?

Ja ich denke schon.... aber bei der Zeile:Respo.Lines.Add('NumberOfWafers: ' + Response.NumberOfWafers.DecimalString); meckert er noch: Der Compiler sagt dass 'string' und 'TXSDecimal' Inkompatible Typen sind. Wie kann ich jetzt das NumberOfWafers umwandeln.

Bei den komplexeren Datentypen wie die Eigenschaften ActualCSA, EdcEpaEquipmentList und LotAttributes wird es natürlich schwierig mit deinem Vorwissen.

Das wäre jetzt erstmal nicht so wild, das würde ich dann vielleicht auch noch hinbekommen, habe noch ein paar Monate Zeit, die Anbindung in die vorhandene GUI einzubinden. Das WICHTIGSTE ist jetzt erstmal mit einer bestimmten Anfrage überhaupt eine Antwort vom Sever zu bekommen, da die ganze Geschichte noch über einen VPN läuft der auch bestimmte Zertifikate benötigt. Aber diese Verbindung habe ich ja schon über meinen Browser aufgebaut.

TiGü 27. Apr 2018 10:04

AW: Webservice
 
Zitat:

Zitat von InschenierSB (Beitrag 1400712)
aber bei der Zeile:Respo.Lines.Add('NumberOfWafers: ' + Response.NumberOfWafers.DecimalString); meckert er noch: Der Compiler sagt dass 'string' und 'TXSDecimal' Inkompatible Typen sind. Wie kann ich jetzt das NumberOfWafers umwandeln.

Bitte nicht meine Beispiele abtippen sondern kopieren.
Insofern du eine TMemo-Klasse mit den Namen Respo auf dem Formular hast, kompiliert die Zeile
Delphi-Quellcode:
Respo.Lines.Add('NumberOfWafers: ' + Response.NumberOfWafers.DecimalString);
ohne Probleme.
DecimalString ist schon vom geforderten Typ
Delphi-Quellcode:
string
.

TiGü 27. Apr 2018 10:07

AW: Webservice
 
Sollte TXSDecimal.DecimalString nicht in D2010 vorhanden sein - das kann ja gut sein - dann bitte einfach schreiben:
Delphi-Quellcode:
Respo.Lines.Add('NumberOfWafers: ' + string(Response.NumberOfWafers.AsBcd));

InschenierSB 27. Apr 2018 10:16

AW: Webservice
 
Zitat:

Zitat von TiGü (Beitrag 1400717)
Sollte TXSDecimal.DecimalString nicht in D2010 vorhanden sein - das kann ja gut sein - dann bitte einfach schreiben:
Delphi-Quellcode:
Respo.Lines.Add('NumberOfWafers: ' + string(Response.NumberOfWafers.AsBcd));

Also es funktioniert jetzt....Wahnsinn... ganz Großes Lob hauptsächlich an dich aber die anderen natürlich auch.
Jetzt ist es Zeit für die Belohnung....

TiGü 27. Apr 2018 10:17

AW: Webservice
 
Zitat:

Zitat von InschenierSB (Beitrag 1400719)
Jetzt ist es Zeit für die Belohnung....

Deinen Wochenlohn nehme ich gerne per PayPal entgegen. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.
Seite 4 von 9   « Erste     234 56     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz