Ruby Web Services Client

P

Peter Hollenbeck

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 Development with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter
 
N

Nicolas H. Modrzyk

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,
 
P

Peter Hollenbeck

Peter said:
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 Development 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
 
N

Nicolas H. Modrzyk

Actually, one more question we might be interested in are:
- what is the protocol ?

Niko,

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,
 
P

Peter Hollenbeck

Peter said:
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
 
J

Jeremy McAnally

String sendmsg = soapAction+".xml";

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

--Jeremy

Peter said:
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


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

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

Nicolas H. Modrzyk

Hey Peter,

Mark Watson 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,

Peter said:
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
 
B

brabuhr

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
 
P

Peter Hollenbeck

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
 
A

Akshay Jangid

Peter said:
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 Development with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter

Hi All,

I have created a stand alone webservice tool to access any webservice
using ruby.
Just give the url , it will show you all the available method and let u
access them.
You need ruby gem Saop4r for it. It uses WSDL2Ruby as the core
implementation.
you can download my source code from below location :-
http://docs.google.com/uc?id=0By8L7...WJiMWQtNGEzYzdjNDBiMzU0&export=download&hl=en

The attachment is a .jpg file.Change its extension to .zip and then
unzip it.

Read the main.rb file for more instructions....
Email me at (e-mail address removed) for feedback or any queries.....

Regards,
Akshay Jangid
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,815
Messages
2,569,703
Members
45,494
Latest member
KandyFrank

Latest Threads

Top