AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

RPC und Delphi 2009

Ein Thema von alphaflight83 · begonnen am 21. Apr 2009 · letzter Beitrag vom 1. Jul 2009
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.721 Beiträge
 
Delphi 10.4 Sydney
 
#21

Re: RPC und Delphi 2009

  Alt 16. Jun 2009, 10:14
für die XML selber dürfte es reichen sie ohne Codierinfo zu erstellen, dann wäre sie per Standard UTF-8-kodiert und das dürfte mit der Ansi- bzw. ASCII-Kodierung vereinbar sein, welche dieses nicht mehr funktionierende XML-RPC-Teil verwendet ... steht leider nirgends, welches es genau ist, aber egal.

Da sie es nicht angeben und XML laut den XML-Spezifikationen standardmäßig UTF-8 ist, wär das vermutlich dennoch OK.

Und die XML-RPC-Spec sieht nun auch nicht sooo kompliziert aus

Nja, mal sehn was ich da hinbekomm.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.902 Beiträge
 
Delphi 2010 Professional
 
#22

Re: RPC und Delphi 2009

  Alt 16. Jun 2009, 12:23
Zitat von alphaflight83:
Ab heute gibt es den Real Thin Client (RTC) unter der freien BSD Lizenz.
Hiermit sollte sich dann das leidige Thema RPC auf D2009 vernünftig lösen lassen.
An und für sich mag das ganz gut klingen.
Du solltest aber beachten, dass die RTC Lizenz in diesem Jahr öfter gewechselt wurde als manche Leute ihre Unterwäsche wechseln...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
147 Beiträge
 
Delphi 10.4 Sydney
 
#23

Re: RPC und Delphi 2009

  Alt 26. Jun 2009, 14:28
So, ich hab mich jetzt mal am RTC versucht, was auch im Ansatz funktioniert, solange ich keine Parameter mit senden muss.
Ich habs aber bisher nicht geschnallt, wie ich Parameter richtig übergeben kann.

Delphi-Quellcode:
with RtcHttpClient do begin
  ServerAddr := AnsiString(IP_Address);
  ServerPort := AnsiString(IntToStr(TCP_Port));
  // UseWinHTTP := True;
  Connect;
end;

with RtcClientModule do begin
  ModuleFilename := '/RPC2';
  ModuleHost := AnsiString(IP_Address);
  DataFormat := fmt_XMLRPC;
  StartCalls;
  Data.NewFunction('get_item_descr');
  (* --> hier möchte ich noch die Variable Integer: ItemID als Parameter übergeben *)
  Call(RtcResult);
  Post;
end;

with RtcResult do begin
  if Valid then Result := 1
  else Result := 0;
end;
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
147 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: RPC und Delphi 2009

  Alt 29. Jun 2009, 11:37
Okay, sollte jetzt laufen.

Benutzt wurden:
XMLDocument: TXMLDocument;
RtcHttpClient: TRtcHttpClient;
RtcDataRequest: TRtcDataRequest;

Delphi-Quellcode:
(******************************
** Function: RPC_GetItemDesc **
******************************)

function RPC_GetItemDesc(IP_Address: String; TCP_Port, ItemID: Integer):LongInt;
begin
  with XMLDocument do begin
    Active := true;
    Version := '1.0' ;
    Encoding := 'UTF-8' ;
  
    ChildNodes.Clear;
    with AddChild('methodCall') do begin
      with AddChild('methodName') do
        NodeValue:= 'get_item_descr';
      with AddChild('params') do
        with AddChild('param').AddChild('value').AddChild('int') do
          NodeValue:= ItemID;
    end;
  end;

  with RtcHttpClient do begin
    ServerAddr := AnsiString(IP_Address);
    ServerPort := AnsiString(IntToStr(TCP_Port));
    UseWinHTTP := True;
    Connect;
  end;

  with RtcDataRequest do begin
    Request.Method := 'Post';
    Request.URI := '/RPC2';
    Post;
  end;
end;


(******************************************
** Procedure: RtcDataRequestBeginRequest **
******************************************)

procedure RtcDataRequestBeginRequest(Sender: TRtcConnection);
begin
  with TRtcDataClient(Sender) do begin
    Request['Content-type']:='text/xml';
    Write(AnsiString(XMLDocument.XML.Text));
  end;
end;
Alle anderen Kombinationen die ich ausprobiert hatte, haben mir immer die XML Daten so verbaut,
dass der Server die Anfragen nicht gefressen hat. Mit dieser Kombination tut nun alles wie es soll.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
DTkalcec

Registriert seit: 1. Jul 2009
1 Beiträge
 
#25

Re: RPC und Delphi 2009

  Alt 1. Jul 2009, 20:02
Hier ist ein Beispiel wie es auch mit der eingebauten XML-RPC funktionalität gehn sollte ...

Benutzt werden:
RtcHttpClient: TRtcHttpClient;
RtcClientModule: TRtcClientModule;
RtcResult: TRtcResult;

Delphi-Quellcode:
with RtcHttpClient do begin
  ServerAddr := AnsiString(IP_Address);
  ServerPort := AnsiString(IntToStr(TCP_Port));
  // UseWinHTTP := True;
  AutoConnect:=True;
end;

with RtcClientModule do begin
  ModuleFilename := '/RPC2';
  ModuleHost := AnsiString(IP_Address);
  DataFormat := fmt_XMLRPC;

  with Data.NewFunction('get_item_descr') do // <methodcall><methodname>
    with newArray('params') do // <params>
      asInteger[0]:=123; // <param><value><int>

  Call(RtcResult); // <- raus damit
end;
Da RTC SDK komponenten event-basierts sind, kommt das resultat in das OnResult event von der RtcResult komponente.

Übrigens ... die "Data.toXMLRPCRequest" funktion kann mann vor dem "Call()" beutzen um zu testen wie das XML-RPC string aussieht das an den Server geschickt wird.

MfG,
Danijel Tkalcec
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf