import java.net.*;
import java.io.*;
import java.math.BigInteger;
public class FibonacciClient {
static String defaultServer = "http://www.elharo.com/fibonacci/XML-RPC";
public static void main(String[] args) {
if (args.length <= 0) {
System.out.println(
"Usage: java FibonacciClient number url"
);
return;
}
String server = defaultServer;
if (args.length >= 2) server = args[1];
try {
// Connect to the server
URL u = new URL(server);
URLConnection uc = u.openConnection();
HttpURLConnection connection = (HttpURLConnection) uc;
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
OutputStream out = connection.getOutputStream();
Writer wout = new OutputStreamWriter(out);
// Write the request
wout.write("\r\n");
wout.write("\r\n");
wout.write(" calculateFibonacci\r\n");
wout.write(" \r\n");
wout.write(" \r\n");
wout.write(" " + args[0] + "\r\n");
wout.write(" \r\n");
wout.write(" \r\n");
wout.write("\r\n");
wout.flush();
wout.close();
// Read the response
InputStream in = connection.getInputStream();
BigInteger result = readFibonacciXMLRPCResponse(in);
System.out.println(result);
in.close();
connection.disconnect();
}
catch (IOException e) {
System.err.println(e);
}
}
private static BigInteger readFibonacciXMLRPCResponse(
InputStream in) throws IOException, NumberFormatException,
StringIndexOutOfBoundsException {
StringBuffer sb = new StringBuffer();
Reader reader = new InputStreamReader(in, "UTF-8");
int c;
while ((c = in.read()) != -1) sb.append((char) c);
String document = sb.toString();
String startTag = "";
String endTag = "";
int start = document.indexOf(startTag) + startTag.length();
int end = document.indexOf(endTag);
String result = document.substring(start, end);
return new BigInteger(result);
}
}