Ruby Web Services Client


#1

I have a simple web services client written in Java. The essence of it
is about 30 lines of code. It sends an XML message of about 20 lines to
a web service and receives an XML response that may be as many as 8000
lines. I have searched the web and have bought the books Programming
Ruby and Agile Web D. with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter


#2

Hey Peter,

I’ve done a similar thing before in Ruby. (In the exact same
situation, where I migrated my java client, to a lighter and faster
Ruby client)
What is the problem you’re facing ?
-> creating the message ?
-> calling the web service ?
-> streaming the answer ?

Niko,


#3

Peter H. wrote:

I have a simple web services client written in Java. The essence of it
is about 30 lines of code. It sends an XML message of about 20 lines to
a web service and receives an XML response that may be as many as 8000
lines. I have searched the web and have bought the books Programming
Ruby and Agile Web D. with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter

Clarification of my above entry:
It is implied but not stated that I want a Ruby program that does the
same as my existing Java program.
Peter


#4

Actually, one more question we might be interested in are:

  • what is the protocol ?

Niko,


#5

Peter H. wrote:

Peter H. wrote:

I have a simple web services client written in Java. The essence of it
is about 30 lines of code. It sends an XML message of about 20 lines to
a web service and receives an XML response that may be as many as 8000
lines. I have searched the web and have bought the books Programming
Ruby and Agile Web D. with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter

Clarification of my above entry:
It is implied but not stated that I want a Ruby program that does the
same as my existing Java program.
Peter

Niko,
I guess all of the above. I have done a little with Ruby on Rails and
would like to use it, but don’r want to proceed until I solve this
problem. In my web searching I find documentation of several Ruby
protocol implementations but some are quite old.

The Java code looks like this:
String soapAction = args[0];
String sendmsg = soapAction+".xml";
String urlString = “http://dealer.patagonia.com/za/PXM”;
try {
URL url = new URL(urlString);
HttpURLConnection httpConnection =
(HttpURLConnection) url.openConnection();
httpConnection.setRequestProperty(“SOAPAction”, soapAction);
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
httpConnection.setRequestMethod(“POST”);
httpConnection.setRequestProperty(“Content-Type”, “text/xml”);
PrintStream httpout = new
PrintStream(httpConnection.getOutputStream());
BufferedReader in = new BufferedReader(new
InputStreamReader(fis));
/* Get first line of the outgoing message /
String line = in.readLine();
while (line != null) {
System.out.println(line);
/
Send the line to the http connection */
httpout.print(line);
line = in.readLine();
System.out.println(“Reading the response stream …”);
BufferedReader in2 =
new BufferedReader(
new InputStreamReader(httpConnection.getInputStream()));
System.out.println(“Response:”);
String line = in2.readLine();
while (line != null) {
if (line.length() > 2)
System.out.println(line);
line = in2.readLine();

I have fumbled around with Ruby HTTP but am getting nowhere.
I would appreciate any direction you can give.
Peter


#6

String sendmsg = soapAction+".xml";

Ah it looks like you’re using SOAP; check out the soap4r project. :slight_smile:

–Jeremy

On 1/21/07, Peter H. removed_email_address@domain.invalid wrote:

Peter
protocol implementations but some are quite old.
httpConnection.setDoOutput(true);
System.out.println(line);
if (line.length() > 2)

Posted via http://www.ruby-forum.com/.


My free Ruby e-book:
http://www.humblelittlerubybook.com/book/

My blogs:
http://www.mrneighborly.com/
http://www.rubyinpractice.com/


#7

Nicolas H. Modrzyk wrote:

Hey Peter,

Mark W. is the guy that put me on track the first time.
Did you read his article?
http://www.devx.com/enterprise/Article/28101/1954?pf=true

He has a SOAP section as well. That would help.

Niko,

Thanks for the reference. I read the article, but it talks about web
services, not clients. Maybe one can be inferred from the other but I’m
not able to.
Peter


#8

Hey Peter,

Mark W. is the guy that put me on track the first time.
Did you read his article?
http://www.devx.com/enterprise/Article/28101/1954?pf=true

He has a SOAP section as well. That would help.

Niko,


#9

Jeremy McAnally wrote:

String sendmsg = soapAction+".xml";

Ah it looks like you’re using SOAP; check out the soap4r project. :slight_smile:

–Jeremy

On 1/21/07, Peter H. removed_email_address@domain.invalid wrote:

Peter
protocol implementations but some are quite old.
httpConnection.setDoOutput(true);
System.out.println(line);
if (line.length() > 2)

Posted via http://www.ruby-forum.com/.


My free Ruby e-book:
http://www.humblelittlerubybook.com/book/

My blogs:
http://www.mrneighborly.com/

Thanks. I still don’t see how to send and XML message and get an XML
response. Maybe it’s beyond me.
Peter

http://www.rubyinpractice.com/


#10

Thanks to everyone for trying to help this old man. For the moment I am
giving up on this approach. I am going to have Ruby on Rails send a
request to the Java code via a file and get the response via a file. Not
elegant but it should satisfy my low volume needs - and I think I know
how to do it.

Thanks,
Peter


#11

On 1/22/07, Peter H. removed_email_address@domain.invalid wrote:

Jeremy McAnally wrote:

String sendmsg = soapAction+".xml";

Ah it looks like you’re using SOAP; check out the soap4r project. :slight_smile:

Thanks. I still don’t see how to send and XML message and get an XML
response. Maybe it’s beyond me.

Do you have a WSDL for the service?

http://www.zorched.net/2006/02/09/ruby-soap4r-for-web-services/
service = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
service.wiredump_dev = STDOUT if $DEBUG

p service.SearchContacts(:search => 'some_name')

http://www.pranavbihari.com/articles/2005/12/02/testing-paypal-web-services-with-ruby-soap4r
http://www.brendonwilson.com/blog/2006/04/02/ruby-soap4r-wsdl-hell