Forum: Ruby Ruby Web Services Client

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 05:12
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
B760aaaec82c275c5c805fffe58d5191?d=identicon&s=25 Nicolas H. Modrzyk (Guest)
on 2007-01-22 05:17
(Received via mailing list)
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,
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 05:20
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
B760aaaec82c275c5c805fffe58d5191?d=identicon&s=25 Nicolas H. Modrzyk (Guest)
on 2007-01-22 05:26
(Received via mailing list)
Actually, one more question we might be interested in are:
- what is the protocol ?

Niko,
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 05:34
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
6d3c187a8b3ef53b08e3e7e8572c4fea?d=identicon&s=25 Jeremy McAnally (Guest)
on 2007-01-22 06:15
(Received via mailing list)
String sendmsg    = soapAction+".xml";

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

--Jeremy

On 1/21/07, Peter Hollenbeck <pwhbeck@comcast.net> 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/
B760aaaec82c275c5c805fffe58d5191?d=identicon&s=25 Nicolas H. Modrzyk (Guest)
on 2007-01-22 06:25
(Received via mailing list)
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,
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 06:38
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
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 06:40
Jeremy McAnally wrote:
> String sendmsg    = soapAction+".xml";
>
> Ah it looks like you're using SOAP; check out the soap4r project. :)
>
> --Jeremy
>
> On 1/21/07, Peter Hollenbeck <pwhbeck@comcast.net> 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/
E0c987f680cd640c14912ebfbf0f0f07?d=identicon&s=25 unknown (Guest)
on 2007-01-22 19:01
(Received via mailing list)
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. :)
>
> 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-...
    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/te...
http://www.brendonwilson.com/blog/2006/04/02/ruby-...
0e2660068b5592dc54c9cb75e31b4c89?d=identicon&s=25 Peter Hollenbeck (pwhbeck)
on 2007-01-22 19:46
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
This topic is locked and can not be replied to.