HTTP post to a differnt port + no content type response

Hello everyone, I'm trying my first ruby script here. What I am trying
to do is sending an SMS using Kannel, for this Kannel runs an script in
an specific port(13013).

Basically you do a HTTP post like this:
  http://192.168.10.204:13013/cgi-bin/sendsms?username=tester&password=foobar&from=444&to=44440295&smsc=mysmsc&text=hello+world

and i get an SMS in my mobile.

I'm trying the following:

#!/usr/bin/ruby
require 'net/http'
require 'uri'
    res =
Net::HTTP.post_form(URI.parse('http://192.168.10.204:13013/cgi-bin/sendsms'),
  { 'user'=>'tester',
        'pass'=>'foobar',
        'from'=>'444',
        'to'=>'44440295',
        'smsc'=>'mysmsc',
        'text'=>'Test from ruby!'
})
puts res.body

But i get the following Error:
"Invalid content-type"

I have also tried without the puts res.body part as the response from
Kannel is a plain text response.

I am thinking that the error is that I am trying to post in the port
13013?

Can someone please guide me on how to achieve this?

Thank you

alejandro

···

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

Hi,

different port should not be a prolem. I think your problem is that
you are trying to use POST method (HTTP.post_form) while what you
really want is GET (at least your first example implies that).

So try

#!/usr/bin/ruby
require 'net/http'
require 'uri'

uri = URI.parse('http://192.168.10.204:13013/cgi-bin/sendsms'\)
uri.set_query( 'user'=>'tester', 'pass'=>'foobar', 'from'=>'444',
'to'=>'44440295', 'smsc'=>'mysmsc', 'text'=>'Test from ruby!')

res = Net::HTTP.get(uri),
puts res.body

I have not tested this, so maybe you'll need to fix this.

···

On 1/8/07, Alejandro Ramierz <aramirez@ebclosion.com> wrote:

Hello everyone, I'm trying my first ruby script here. What I am trying
to do is sending an SMS using Kannel, for this Kannel runs an script in
an specific port(13013).

Basically you do a HTTP post like this:
  http://192.168.10.204:13013/cgi-bin/sendsms?username=tester&password=foobar&from=444&to=44440295&smsc=mysmsc&text=hello+world

and i get an SMS in my mobile.

I'm trying the following:

#!/usr/bin/ruby
require 'net/http'
require 'uri'
    res =
Net::HTTP.post_form(URI.parse('http://192.168.10.204:13013/cgi-bin/sendsms&#39;\),
  { 'user'=>'tester',
        'pass'=>'foobar',
        'from'=>'444',
        'to'=>'44440295',
        'smsc'=>'mysmsc',
        'text'=>'Test from ruby!'
})
puts res.body

But i get the following Error:
"Invalid content-type"

I have also tried without the puts res.body part as the response from
Kannel is a plain text response.

I am thinking that the error is that I am trying to post in the port
13013?

Can someone please guide me on how to achieve this?

Jan Svitok wrote:

I'm trying the following:
        'smsc'=>'mysmsc',

I am thinking that the error is that I am trying to post in the port
13013?

Can someone please guide me on how to achieve this?

Hi,

different port should not be a prolem. I think your problem is that
you are trying to use POST method (HTTP.post_form) while what you
really want is GET (at least your first example implies that).

So try

#!/usr/bin/ruby
require 'net/http'
require 'uri'

uri = URI.parse('http://192.168.10.204:13013/cgi-bin/sendsms&#39;\)
uri.set_query( 'user'=>'tester', 'pass'=>'foobar', 'from'=>'444',
'to'=>'44440295', 'smsc'=>'mysmsc', 'text'=>'Test from ruby!')

res = Net::HTTP.get(uri),
puts res.body

Or

#!/usr/bin/ruby
require 'open-uri'
p
open("http://192.168.10.204:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=444&to=3423424&smsc=mysmsc&text=test
from ruby")

-.rb

···

On 1/8/07, Alejandro Ramierz <aramirez@ebclosion.com> wrote:

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

Thank you Jan and Rodrigo for taking the time to answer!

I've tried Rodrigo's version and it worked fine! But i am curious as of
the error i get from Jan's version:

protected method `set_query' called for #<URI::HTTP:0xb7f6ed90>
(NoMethodError)

I have looked of the set_query Method but there is not much info there.
What could be the cause of this?

again thanks!

Alejandro

Rodrigo Bermejo wrote:

···

Jan Svitok wrote:

On 1/8/07, Alejandro Ramierz <aramirez@ebclosion.com> wrote:

I'm trying the following:
        'smsc'=>'mysmsc',

I am thinking that the error is that I am trying to post in the port
13013?

Can someone please guide me on how to achieve this?

Hi,

different port should not be a prolem. I think your problem is that
you are trying to use POST method (HTTP.post_form) while what you
really want is GET (at least your first example implies that).

So try

#!/usr/bin/ruby
require 'net/http'
require 'uri'

uri = URI.parse('http://192.168.10.204:13013/cgi-bin/sendsms&#39;\)
uri.set_query( 'user'=>'tester', 'pass'=>'foobar', 'from'=>'444',
'to'=>'44440295', 'smsc'=>'mysmsc', 'text'=>'Test from ruby!')

res = Net::HTTP.get(uri),
puts res.body

Or

#!/usr/bin/ruby
require 'open-uri'
p
open("http://192.168.10.204:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=444&to=3423424&smsc=mysmsc&text=test
from ruby")

-.rb

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

I see... as I said, I haven't tried the code myself. Maybe try just
uri.query=, although I don't know what format it takes. Try either
hash or string. Or look it up in the sources :wink:

···

On 1/9/07, Alejandro Ramirez <aramirez@ebclosion.com> wrote:

Thank you Jan and Rodrigo for taking the time to answer!

I've tried Rodrigo's version and it worked fine! But i am curious as of
the error i get from Jan's version:

protected method `set_query' called for #<URI::HTTP:0xb7f6ed90>
(NoMethodError)

I have looked of the set_query Method but there is not much info there.
What could be the cause of this?