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

On 1/8/07, Alejandro R. [email protected] 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’)
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.

Jan S. wrote:

On 1/8/07, Alejandro R. [email protected] 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’)
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/9/07, Alejandro R. [email protected] 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?

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:

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 B. wrote:

Jan S. wrote:

On 1/8/07, Alejandro R. [email protected] 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’)
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