So what I entered into telnet was just:
That definitely isn’t XMLRPC. The XMLRPC spec is very simple, see
Since the root element isn’t then it isn’t XMLRPC, so you
be able to use an xmlrpc client library.
What you seem to have is an ad-hoc XML-over-TCP exchange. So you need
(1) Open a TCPSocket to connect to the server
(2) Squirt your XML request down it
(3) Perhaps: half-close the connection (*)
(4) Read the response
(5) Either wait for the connection to close, or wait for the closing tag
of the response (**)
(*) This depends on how the server detects the end of the request - does
look for the closing tag, or does it wait for the connection to close?
(**) The first case lets you read a blob and parse it afterwards. The
requires you to parse as you read, e.g. with a stream parser.
If the server side closes the connection after sending the response, you
might be able to start with something as simple as
conn = TCPSocket.new(‘18.104.22.168’, 1234) # Destination hostname and port
#conn.close_write # maybe not needed
res = conn.read
Then pass res to a parser like REXML. If not, then you should pass the
conn object to something like an REXML StreamParser to read element at a
You’ll just have to play with it to make it work, or talk to the server
designer, since there are some unknowns in the above. If they were using
XML-over-HTTP then it would be clearer, because the semantics of
end-of-request and end-of-response for HTTP are well-defined.