mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
reference: XmlRpcClient
git-svn-id: svn://ultimatepp.org/upp/trunk@5165 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
52c883a08e
commit
6ae62772d7
9 changed files with 104 additions and 119 deletions
|
|
@ -2,8 +2,7 @@ description "Using XmlRpc with public XmlRpc server\377";
|
|||
|
||||
uses
|
||||
Core,
|
||||
XmlRpc,
|
||||
Core\XmlRpc;
|
||||
Core\Rpc;
|
||||
|
||||
file
|
||||
main.cpp;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#ifndef _XmlRpcCall_icpp_init_stub
|
||||
#define _XmlRpcCall_icpp_init_stub
|
||||
#include "Core/init"
|
||||
#include "XmlRpc/init"
|
||||
#include "Core\XmlRpc/init"
|
||||
#include "Core\Rpc/init"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,41 +1,29 @@
|
|||
#include <XmlRpc/XmlRpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
struct FoxResult {
|
||||
bool flerror;
|
||||
double amount;
|
||||
String message;
|
||||
|
||||
void Map(ValueMapper& m) {
|
||||
m("flerror", flerror)("amount", amount)("message", message);
|
||||
}
|
||||
};
|
||||
|
||||
XMLRPC_STRUCT(FoxResult)
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
StdLogSetup(LOG_COUT|LOG_FILE);
|
||||
XmlRpcRequest xr("http://foxrate.org/rpc");
|
||||
xr.Method("foxrate.currencyConvert") << "USD" << "GBP" << 120;
|
||||
Value v = xr.Execute();
|
||||
if(v.IsError())
|
||||
LOG("Error: " << v);
|
||||
else
|
||||
if(v["flerror"] == 0)
|
||||
LOG(v["amount"]);
|
||||
else
|
||||
LOG("Failed.");
|
||||
|
||||
FoxResult r;
|
||||
if(XmlRpcRequest("http://foxrate.org/rpc").Method("foxrate.currencyConvert")
|
||||
<< "USD" << "GBP" << 120
|
||||
>> r)
|
||||
if(r.flerror)
|
||||
LOG("Server reported erro");
|
||||
else
|
||||
LOG(r.amount);
|
||||
else
|
||||
LOG("Failed.");
|
||||
}
|
||||
#include <XmlRpc/XmlRpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
StdLogSetup(LOG_COUT|LOG_FILE);
|
||||
LogRpcRequests();
|
||||
XmlRpcRequest xr("http://foxrate.org/rpc");
|
||||
xr.Method("foxrate.currencyConvert") << "USD" << "GBP" << 120;
|
||||
Value v = xr.Execute();
|
||||
if(v.IsError())
|
||||
LOG("Error: " << v);
|
||||
else
|
||||
if(v["flerror"] == 0)
|
||||
LOG(v["amount"]);
|
||||
else
|
||||
LOG("Failed.");
|
||||
|
||||
v = XmlRpcRequest("http://foxrate.org/rpc")("foxrate.currencyConvert", "EUR", "USD", 10)
|
||||
.Execute();
|
||||
if(v.IsError())
|
||||
LOG("Error: " << v);
|
||||
else
|
||||
if(v["flerror"] == 0)
|
||||
LOG(v["amount"]);
|
||||
else
|
||||
LOG("Failed.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +1,27 @@
|
|||
#include <Core/XmlRpc/XmlRpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
void Compute(double a, String op, double b)
|
||||
{
|
||||
double result;
|
||||
Cout() << a << op << b << '=';
|
||||
XmlRpcRequest call("127.0.0.1:1234");
|
||||
if(call("compute", a, op, b) >> result)
|
||||
Cout() << result;
|
||||
else
|
||||
Cout() << " error: " << call.GetError();
|
||||
Cout() << '\n';
|
||||
}
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
Time tm;
|
||||
XmlRpcRequest("127.0.0.1:1234")("ping") >> tm;
|
||||
Cout() << tm << '\n';
|
||||
|
||||
Compute(12, "+", 12);
|
||||
Compute(12, "*", 12);
|
||||
Compute(12, "+56", 12);
|
||||
Compute(12, "/", 0);
|
||||
}
|
||||
#include <Core/Rpc/Rpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
void Compute(double a, String op, double b)
|
||||
{
|
||||
double result;
|
||||
Cout() << a << op << b << '=';
|
||||
XmlRpcRequest call("127.0.0.1:1234");
|
||||
if(call("compute", a, op, b) >> result)
|
||||
Cout() << result;
|
||||
else
|
||||
Cout() << " error: " << call.GetError();
|
||||
Cout() << '\n';
|
||||
}
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
Time tm;
|
||||
XmlRpcRequest("127.0.0.1:1234")("ping") >> tm;
|
||||
Cout() << tm << '\n';
|
||||
|
||||
Compute(12, "+", 12);
|
||||
Compute(12, "*", 12);
|
||||
Compute(12, "+56", 12);
|
||||
Compute(12, "/", 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ description "Client for XmlRpcServer example\377";
|
|||
|
||||
uses
|
||||
Core,
|
||||
Core/XmlRpc;
|
||||
Core\Rpc;
|
||||
|
||||
file
|
||||
XmlRpcClient.cpp;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef _XmlRpcClient_icpp_init_stub
|
||||
#define _XmlRpcClient_icpp_init_stub
|
||||
#include "Core/init"
|
||||
#include "Core/XmlRpc/init"
|
||||
#include "Core\Rpc/init"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,43 +1,42 @@
|
|||
#include <Core/XmlRpc/XmlRpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
XMLRPC_METHOD(compute)
|
||||
{
|
||||
double a, b;
|
||||
String op;
|
||||
rpc >> a >> op >> b;
|
||||
Cout() << "Request: " << a << op << b << '\n';
|
||||
if(op.GetCount() == 1)
|
||||
switch(*op) {
|
||||
case '+':
|
||||
rpc << a + b;
|
||||
return;
|
||||
case '-':
|
||||
rpc << a - b;
|
||||
return;
|
||||
case '/':
|
||||
if(b == 0)
|
||||
rpc << ErrorValue("division by zero");
|
||||
else
|
||||
rpc << a / b;
|
||||
return;
|
||||
case '*':
|
||||
rpc << a * b;
|
||||
return;
|
||||
}
|
||||
rpc << ErrorValue("unknown operator");
|
||||
}
|
||||
|
||||
XMLRPC_METHOD(ping)
|
||||
{
|
||||
rpc << GetSysTime();
|
||||
}
|
||||
|
||||
namespace Upp { extern bool HttpClient_Trace__; }
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
Cout() << "Server..\n";
|
||||
XmlRpcServerLoop(1234);
|
||||
}
|
||||
#include <Core/Rpc/Rpc.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
RPC_METHOD(compute)
|
||||
{
|
||||
double a, b;
|
||||
String op;
|
||||
rpc >> a >> op >> b;
|
||||
Cout() << "Request: " << a << op << b << '\n';
|
||||
if(op.GetCount() == 1)
|
||||
switch(*op) {
|
||||
case '+':
|
||||
rpc << a + b;
|
||||
return;
|
||||
case '-':
|
||||
rpc << a - b;
|
||||
return;
|
||||
case '/':
|
||||
if(b == 0)
|
||||
rpc << ErrorValue("division by zero");
|
||||
else
|
||||
rpc << a / b;
|
||||
return;
|
||||
case '*':
|
||||
rpc << a * b;
|
||||
return;
|
||||
}
|
||||
rpc << ErrorValue("unknown operator");
|
||||
}
|
||||
|
||||
RPC_METHOD(ping)
|
||||
{
|
||||
rpc << GetSysTime();
|
||||
}
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
Cout() << "Server..\n";
|
||||
LogRpcRequests();
|
||||
RpcServerLoop(1234);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ description "XML-RPC simple server\377";
|
|||
|
||||
uses
|
||||
Core,
|
||||
Core/XmlRpc;
|
||||
Core\Rpc;
|
||||
|
||||
file
|
||||
XmlRpcServer.cpp;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef _XmlRpcServer_icpp_init_stub
|
||||
#define _XmlRpcServer_icpp_init_stub
|
||||
#include "Core/init"
|
||||
#include "Core/XmlRpc/init"
|
||||
#include "Core\Rpc/init"
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue