On Fri, Feb 02, 2007 at 10:46:17PM +0900, Max Russell wrote: > I've now tried 2 different methods of sending a soap message (read in > from a file) at a server, one using the net/http library the other a > socket. So what happens when you try these methods? What does tcpdump (Linux) or ethereal (Windows) show at the network level? tcpdump -i eth0 -n -s1500 -vX tcp port 80 > require 'soap/wsdlDriver' > require 'rexml/document' Why require these libraries? AFAICT you're just trying to send a pre-existing XML file over HTTP. > #require 'net/http' > require 'socket' > include Socket::Constants > > file = File.new("PDSUpdate.xml") > doc = REXML::Document.new(file) > #puts doc > #http.post("http://inpsesrh02.inpses.co.uk:7778", doc) I'd suggest you don't parse the document using REXML. Just read it in as a file, and then squirt it out over the HTTP connection. I'm not sure how http.post will cope with being given an REXML::Document object. Try "ri Net::HTTP" for some samples of how to do a HTTP POST. (or "ri1.8 Net::HTTP" under Ubuntu). Capture the result in a variable, e.g. res = http.post ... and inspect it. Perhaps you should be posting to a more specific URL, e.g. http.post("http://inpsesrh02.inpses.co.uk:7778/foo/myapp", doc) > socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) > sockaddr = Socket.pack_sockaddr_in( 7779, > 'inpsesrh02.inpses.co.uk/orabpel/default/' ) > socket.connect( sockaddr ) > socket.puts doc > socket.close Doing it this way you'd want a TCPSocket. See http://www.rubycentral.com/book/lib_network.html for some examples. HTH, Brian.