Ruby Web Services Client

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

···

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

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,

···

On Jan 22, 2007, at 1:12 PM, Peter Hollenbeck 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 Development with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter

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

Peter Hollenbeck 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 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

···

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

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

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 akshay.dce@gmail.com for feedback or any queries.....

Regards,
Akshay Jangid

···

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

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

Niko,

···

On Jan 22, 2007, at 1:17 PM, Nicolas H. Modrzyk wrote:

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,

On Jan 22, 2007, at 1:12 PM, Peter Hollenbeck 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 Development with Rails but find nothing that leads me
to what I need.

I would appreciate suggestions.
Peter

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

Peter Hollenbeck wrote:

Peter Hollenbeck 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 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

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

···

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

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 Hollenbeck <pwhbeck@comcast.net> wrote:

Peter Hollenbeck wrote:
> Peter Hollenbeck 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 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

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&quot;;
    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

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

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

My blogs:

http://www.rubyinpractice.com/

Hey Peter,

Mark Watson is the guy that put me on track the first time.
Did you read his article?

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

Niko,

···

On Jan 22, 2007, at 1:34 PM, Peter Hollenbeck wrote:

Peter Hollenbeck wrote:

Peter Hollenbeck 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 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

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&quot;;
    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

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

Nicolas H. Modrzyk wrote:

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,

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

···

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

Jeremy McAnally wrote:

String sendmsg = soapAction+".xml";

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

--Jeremy

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

···

On 1/21/07, Peter Hollenbeck <pwhbeck@comcast.net> wrote:

http://www.rubyinpractice.com/

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

Do you have a WSDL for the service?

    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

···

On 1/22/07, Peter Hollenbeck <pwhbeck@comcast.net> 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.

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

···

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