C# Call xml-rpc API [CS_xml-rpc_client] (GOOGLE: c# xml-rpc)
C# Call xml-rpc API [CS_xml-rpc_client] (GOOGLE: c# xml-rpc)
資料來源: https://stackoverflow.com/questions/40647779/how-to-call-an-api-which-is-based-on-xml-rpc-specification-in-c
GITHUB: https://github.com/jash-git/CS_xml-rpc_client
Code
01.xmlrpc_server.php
<?PHP //https://tldp.org/HOWTO/XML-RPC-HOWTO/xmlrpc-howto-php.html include "lib/xmlrpc.inc"; include "lib/xmlrpcs.inc"; function sumAndDifference ($params) { // Parse our parameters. $xval = $params->getParam(0); $x = $xval->scalarval(); $yval = $params->getParam(1); $y = $yval->scalarval(); // Build our response. $struct = array('sum' => new xmlrpcval($x + $y, 'int'), 'difference' => new xmlrpcval($x - $y, 'int')); return new xmlrpcresp(new xmlrpcval($struct, 'struct')); } // Declare our signature and provide some documentation. // (The PHP server supports remote introspection. Nifty!) $sumAndDifference_sig = array(array('struct', 'int', 'int')); $sumAndDifference_doc = 'Add and subtract two numbers'; new xmlrpc_server(array('sample.sumAndDifference' => array('function' => 'sumAndDifference', 'signature' => $sumAndDifference_sig, 'docstring' => $sumAndDifference_doc))); ?>
02.xmlrpc_client.php
<html> <head> <title>XML-RPC PHP Demo</title> </head> <body> <h1>XML-RPC PHP Demo</h1> <?php //https://tldp.org/HOWTO/XML-RPC-HOWTO/xmlrpc-howto-php.html include 'lib/xmlrpc.inc'; // Make an object to represent our server. $server = new xmlrpc_client('phpxmlrpc/xmlrpc_server.php', '127.0.0.1', 8080); // Send a message to the server. $message = new xmlrpcmsg('sample.sumAndDifference', array(new xmlrpcval(5, 'int'), new xmlrpcval(3, 'int'))); $result = $server->send($message); // Process the response. if (!$result) { print "<p>Could not connect to HTTP server.</p>"; } elseif ($result->faultCode()) { print "<p>XML-RPC Fault #" . $result->faultCode() . ": " . $result->faultString(); } else { $struct = $result->value(); $sumval = $struct->structmem('sum'); $sum = $sumval->scalarval(); $differenceval = $struct->structmem('difference'); $difference = $differenceval->scalarval(); print "<p>Sum: " . htmlentities($sum) . ", Difference: " . htmlentities($difference) . "</p>"; } ?> </body> </html> © 2021 GitHub, Inc.
03.C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CookComputing.XmlRpc;//Step 2 ~ xml-rpc /* GOOGLE: c# xml-rpc https://stackoverflow.com/questions/40647779/how-to-call-an-api-which-is-based-on-xml-rpc-specification-in-c https://tldp.org/HOWTO/XML-RPC-HOWTO/xmlrpc-howto-php.html https://github.com/marcosbozzani/xmlrpcnet/tree/master/samples/SumAndDiffVB Step 1 : Created a Console Application in .NET Step 2 : Install the NuGet "xml-rpc.net" Step 3: Created a sample request model class like this, Step 4 : Created a sample response model class like this, Step 5 : Create an interface which is inherited form IXmlRpcProxy base class with the help of the namespace using CookComputing.XmlRpc; and this interface must contain our endpoint method and it should decorate with the filter XmlRpcUrl having the API resource. Step 6 : To make calls to an XML-RPC server it is necessary to use an instance of a proxy class. */ namespace CS_xml_rpc_client { public class response//Step 4 ~ xml-rpc { public int sum { get; set; } public int difference { get; set; } } [XmlRpcUrl("http://127.0.0.1:8080/phpxmlrpc/xmlrpc_server.php")]//Step 5 ~ xml-rpc public interface sumAndDifference : IXmlRpcProxy { [XmlRpcMethod("sample.sumAndDifference")]//endpoint name response sumAndDifference(int x,int y); } class Program { static void Pause() { Console.Write("Press any key to continue..."); Console.ReadKey(true); } static void Main(string[] args) { //--- //Step 6 ~ xml-rpc response response = new response(); sumAndDifference fun = XmlRpcProxyGen.Create<sumAndDifference>(); response = fun.sumAndDifference(5,3); Console.WriteLine("response = {0},{1}", response.sum, response.difference); //---Step 6 ~ xml-rpc Pause(); } } }
One thought on “C# Call xml-rpc API [CS_xml-rpc_client] (GOOGLE: c# xml-rpc)”
SOAP
XML-RPC
.NET C# client