Bad file descriptor error using Net::HTTP

Discussion in 'Ruby' started by brian.wil.greene@gmail.com, Jun 28, 2007.

  1. Guest

    I am trying to access a .net page via my ruby app and pass it a couple
    parameters. Every thing I have tried has resulted in this Bad file
    descriptor, I am wondering if it is something wrong with my
    configuration, not the code. Here is the code that is causing
    problems:

    Net::HTTP.version_1_2
    Net::HTTP.start('www.url.com', 80) {
    |http|
    response =
    http.post('/DoSomething.aspx',
    'id=#{params[:id]}&path=#{params[:imagerecord]}',
    { 'Content-Type' => 'application/x-www-form-
    urlencoded' })
    puts response.body()
    }

    Here is the error I get:

    Errno::EBADF (Bad file descriptor - connect(2)):
    c:/ruby/lib/ruby/1.8/net/http.rb:560:in `initialize'
    c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    c:/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout'
    c:/ruby/lib/ruby/1.8/timeout.rb:76:in `timeout'
    c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    c:/ruby/lib/ruby/1.8/net/http.rb:553:in `do_start'
    c:/ruby/lib/ruby/1.8/net/http.rb:542:in `start'
    c:/ruby/lib/ruby/1.8/net/http.rb:440:in `start'

    I am on Windows 2003 serer with Ruby 1.8.4 and Mongrel. Any help would
    be greatly appreciated.
     
    , Jun 28, 2007
    #1
    1. Advertising

  2. On Jun 28, 8:20 am, wrote:
    > I am trying to access a .net page via my ruby app and pass it a couple
    > parameters. Every thing I have tried has resulted in this Bad file
    > descriptor, I am wondering if it is something wrong with my
    > configuration, not the code. Here is the code that is causing
    > problems:
    >
    > Net::HTTP.version_1_2
    > Net::HTTP.start('www.url.com', 80) {
    > |http|
    > response =
    > http.post('/DoSomething.aspx',
    > 'id=#{params[:id]}&path=#{params[:imagerecord]}',
    > { 'Content-Type' => 'application/x-www-form-
    > urlencoded' })
    > puts response.body()
    > }
    >
    > Here is the error I get:
    >
    > Errno::EBADF (Bad file descriptor - connect(2)):
    > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `initialize'
    > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    > c:/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout'
    > c:/ruby/lib/ruby/1.8/timeout.rb:76:in `timeout'
    > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    > c:/ruby/lib/ruby/1.8/net/http.rb:553:in `do_start'
    > c:/ruby/lib/ruby/1.8/net/http.rb:542:in `start'
    > c:/ruby/lib/ruby/1.8/net/http.rb:440:in `start'
    >
    > I am on Windows 2003 serer with Ruby 1.8.4 and Mongrel. Any help would
    > be greatly appreciated.


    Line 560 of net/http.rb is this:

    s = timeout(@open_timeout) { TCPSocket.open(conn_address(),
    conn_port()) }

    What happens when you run this standalone snippet?

    require 'socket'
    require 'timeout'

    s = Timeout.timeout(5){
    TCPSocket.open(url, 80)
    }

    p s

    s.close

    Regards,

    Dan
     
    Daniel Berger, Jun 28, 2007
    #2
    1. Advertising

  3. Guest

    On Jun 28, 10:57 am, Daniel Berger <> wrote:
    > On Jun 28, 8:20 am, wrote:
    >
    >
    >
    > > I am trying to access a .net page via my ruby app and pass it a couple
    > > parameters. Every thing I have tried has resulted in this Bad file
    > > descriptor, I am wondering if it is something wrong with my
    > > configuration, not the code. Here is the code that is causing
    > > problems:

    >
    > > Net::HTTP.version_1_2
    > > Net::HTTP.start('www.url.com', 80) {
    > > |http|
    > > response =
    > > http.post('/DoSomething.aspx',
    > > 'id=#{params[:id]}&path=#{params[:imagerecord]}',
    > > { 'Content-Type' => 'application/x-www-form-
    > > urlencoded' })
    > > puts response.body()
    > > }

    >
    > > Here is the error I get:

    >
    > > Errno::EBADF (Bad file descriptor - connect(2)):
    > > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `initialize'
    > > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    > > c:/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout'
    > > c:/ruby/lib/ruby/1.8/timeout.rb:76:in `timeout'
    > > c:/ruby/lib/ruby/1.8/net/http.rb:560:in `connect'
    > > c:/ruby/lib/ruby/1.8/net/http.rb:553:in `do_start'
    > > c:/ruby/lib/ruby/1.8/net/http.rb:542:in `start'
    > > c:/ruby/lib/ruby/1.8/net/http.rb:440:in `start'

    >
    > > I am on Windows 2003 serer with Ruby 1.8.4 and Mongrel. Any help would
    > > be greatly appreciated.

    >
    > Line 560 of net/http.rb is this:
    >
    > s = timeout(@open_timeout) { TCPSocket.open(conn_address(),
    > conn_port()) }
    >
    > What happens when you run this standalone snippet?
    >
    > require 'socket'
    > require 'timeout'
    >
    > s = Timeout.timeout(5){
    > TCPSocket.open(url, 80)
    >
    > }
    >
    > p s
    >
    > s.close
    >
    > Regards,
    >
    > Dan



    Dan,

    Thanks. Here is the error I get when executing the above code:

    Timeout::Error (execution expired):
    c:/ruby/lib/ruby/1.8/timeout.rb:54:in `open'
    c:/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout'

    I know it's a valid URL. The page I am trying to access is sitting on
    the same box as my rails app.
     
    , Jun 28, 2007
    #3
  4. On Jun 28, 9:20 am, wrote:
    > On Jun 28, 10:57 am, Daniel Berger <> wrote:


    <snip>

    > > > I am on Windows 2003 serer with Ruby 1.8.4 and Mongrel. Any help would
    > > > be greatly appreciated.

    >
    > > Line 560 of net/http.rb is this:

    >
    > > s = timeout(@open_timeout) { TCPSocket.open(conn_address(),
    > > conn_port()) }

    >
    > > What happens when you run this standalone snippet?

    >
    > > require 'socket'
    > > require 'timeout'

    >
    > > s = Timeout.timeout(5){
    > > TCPSocket.open(url, 80)

    >
    > > }

    >
    > > p s

    >
    > > s.close

    >
    > > Regards,

    >
    > > Dan

    >
    > Dan,
    >
    > Thanks. Here is the error I get when executing the above code:
    >
    > Timeout::Error (execution expired):
    > c:/ruby/lib/ruby/1.8/timeout.rb:54:in `open'
    > c:/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout'
    >
    > I know it's a valid URL. The page I am trying to access is sitting on
    > the same box as my rails app.


    That's peculiar. Firewall or proxy issue perhaps? Maybe you need
    rubysspi?

    http://rubyforge.org/projects/rubysspi/

    Otherwise, I'm at a loss.

    Regards,

    Dan
     
    Daniel Berger, Jun 28, 2007
    #4
  5. plamb Guest

    On Jun 28, 9:27 am, Daniel Berger <> wrote:
    > On Jun 28, 9:20 am, wrote:
    >
    > > On Jun 28, 10:57 am, Daniel Berger <> wrote:

    >
    > <snip>
    >
    >
    >
    > > > > I am on Windows 2003 serer with Ruby 1.8.4 and Mongrel. Any help would
    > > > > be greatly appreciated.

    >
    > > > Line 560 of net/http.rb is this:

    >
    > > > s = timeout(@open_timeout) { TCPSocket.open(conn_address(),
    > > > conn_port()) }

    >
    > > > What happens when you run this standalone snippet?

    >
    > > > require 'socket'
    > > > require 'timeout'

    >
    > > > s = Timeout.timeout(5){
    > > > TCPSocket.open(url, 80)

    >
    > > > }

    >
    > > > p s

    >
    > > > s.close

    >
    > > > Regards,

    >
    > > > Dan

    >
    > > Dan,

    >
    > > Thanks. Here is the error I get when executing the above code:

    >
    > > Timeout::Error (execution expired):
    > > c:/ruby/lib/ruby/1.8/timeout.rb:54:in `open'
    > > c:/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout'

    >
    > > I know it's a valid URL. The page I am trying to access is sitting on
    > > the same box as my rails app.

    >
    > That's peculiar. Firewall or proxy issue perhaps? Maybe you need
    > rubysspi?
    >
    > http://rubyforge.org/projects/rubysspi/
    >
    > Otherwise, I'm at a loss.
    >
    > Regards,
    >
    > Dan


    I ran into the same error when I attempted to get a page with an
    improperly formatted URL. I tried to get 'www.google.com', which
    failed with the same error you encountered. I realized I didn't
    include 'http', and when I tried again with 'http://www.google.com' it
    worked as anticipated.

    ---
    Paul
     
    plamb, Jul 2, 2007
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kevin
    Replies:
    4
    Views:
    1,094
    David Bolen
    Jul 7, 2003
  2. drs
    Replies:
    0
    Views:
    386
  3. Replies:
    9
    Views:
    747
    Abhijit Soman
    Jan 6, 2005
  4. Vishnu
    Replies:
    0
    Views:
    524
    Vishnu
    Jan 6, 2005
  5. lynology

    Bad File Descriptor Error on strcat/strcpy

    lynology, Aug 18, 2004, in forum: C Programming
    Replies:
    4
    Views:
    535
    Chris Torek
    Aug 18, 2004
Loading...

Share This Page