1// TestBase64Client.cpp : A simple xmlrpc client that returns a png file
2// encoded as base64 data to the client.
3//
4// Usage: TestBase64Client serverHost serverPort outputfile
5// Requests a png file from the specified server and saves it in outputfile.
6// Link against xmlrpc lib and whatever socket libs your system needs (ws2_32.lib on windows)
7
8#include "XmlRpc.h"
9#include <iostream>
10#include <fstream>
11#include <stdlib.h>
12
13using namespace XmlRpc;
14
15int main(int argc, char* argv[])
16{
17  if (argc != 4) {
18    std::cerr << "Usage: TestBase64Client serverHost serverPort outputFile\n";
19    return -1;
20  }
21  int port = atoi(argv[2]);
22
23  //XmlRpc::setVerbosity(5);
24  XmlRpcClient c(argv[1], port);
25
26  XmlRpcValue noArgs, result;
27  if (c.execute("TestBase64", noArgs, result))
28  {
29    const XmlRpcValue::BinaryData& data = result;
30    std::ofstream outfile(argv[3], std::ios::binary | std::ios::trunc);
31    if (outfile.fail())
32      std::cerr << "Error opening " << argv[3] << " for output.\n";
33    else
34    {
35      int n = int(data.size());
36      for (int i=0; i<n; ++i)
37        outfile << data[i];
38    }
39  }
40  else
41    std::cout << "Error calling 'TestBase64'\n\n";
42
43  return 0;
44}
45
46