![]() |
Re: RPC und Delphi 2009
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 ![]() Nja, mal sehn was ich da hinbekomm. |
Re: RPC und Delphi 2009
Zitat:
Du solltest aber beachten, dass die RTC Lizenz in diesem Jahr öfter gewechselt wurde als manche Leute ihre Unterwäsche wechseln... |
Re: RPC und Delphi 2009
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; |
Re: RPC und Delphi 2009
Okay, sollte jetzt laufen.
Benutzt wurden: XMLDocument: TXMLDocument; RtcHttpClient: TRtcHttpClient; RtcDataRequest: TRtcDataRequest;
Delphi-Quellcode:
Alle anderen Kombinationen die ich ausprobiert hatte, haben mir immer die XML Daten so verbaut,
(******************************
** 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; dass der Server die Anfragen nicht gefressen hat. Mit dieser Kombination tut nun alles wie es soll. |
Re: RPC und Delphi 2009
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:
Da RTC SDK komponenten event-basierts sind, kommt das resultat in das OnResult event von der RtcResult komponente.
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; Ü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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz