# Routing Error when using "Net::HTTP.start" but doesn't occur

**URL:** <https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687>\
**Category:** Rails\
**Created:** [March 5, 2007, 5:40am UTC](https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687 "2007-03-05T05:40:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [March 5, 2007, 5:40am UTC](https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687/1 "2007-03-05T05:40:30Z")

</div>

Hi all,

I’m stuck on a Routing Error I’m getting when calling my application  
(App2)  
from a test/stub application (App1), however when I enter the same  
request  
to App2 via the browser I do NOT get this routing issue and it works.

My problem is in more detail (if anyone can help) that:

[1] when I call an action in App2 from App1 I get a ROUTING ERROR,  
“Recognition failed for /mycontroller/myaction” - this seems to come  
from  
App2’s inbuilt Rails framework which somehow sees a routing problem and  
immediately sends back a “Routing Error” message without ever getting to  
my  
code within App2.  
[2] when I use the browser with same "  
[http://localhost:3000/mycontroller/myaction](http://localhost:3000/mycontroller/myaction)" URL (i.e. that App1 seems  
to be  
correctly producing, although I don’t have a HTTP trace mechanism to  
100%  
prove this) App2 seems to work fine  
[3] again I don’t see any log info turn up in App2 (as if the rails  
framework picked up on the routing error first and then bounced it prior  
to  
my code getting involved)  
[4] some details of my code below

Code Used (which resides in App1 running on port 3001 - it’s calling  
App2  
running on port 3000)  
url = " [http://localhost:3000/mycontroller/myaction](http://localhost:3000/mycontroller/myaction)"  
uri = URI.parse(url)  
response = nil  
Net::HTTP.start(uri.host, uri.port) do |request|  
response = request.post(uri.path, postData)  
end

Note that “response.body” here gives:

 Action Controller: Exception caught \<\>
# Routing Error

```
Recognition failed for 
"/mycontroller/myaction"
```

Browser Test

- Yet when I call the same URL from my browser it works (and doesn’t  
give  
this message). The URL I use here would be:  
[http://localhost:3000/mycontroller/myaction](http://localhost:3000/mycontroller/myaction)

Any ideas/help? I can’t seem to see what I’m doing wrong. Any way to  
trace  
the HTTP coming directly into App2 to see for myself what Rails is  
doing?  
What about a way to turn up the logging/trace for rails re HTTP?

Thanks in advance  
Greg  
(TextEdit / MacBook)

---

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [March 5, 2007, 7:08am UTC](https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687/2 "2007-03-05T07:08:37Z")

</div>

You could print/log debug information from the Dispatcher.dispatch  
method  
where a ActionController::CgiRequest gets created.

Also note that you are doing a GET in your browser test, but a POST with  
Net::HTTP.

–  
James.

> **[James Mead](https://jamesmead.org/)**
>
> Ruby Developer, author of Mocha, and ex-Antarctic Hero.

---

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [March 5, 2007, 7:37am UTC](https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687/3 "2007-03-05T07:37:39Z")

</div>

Hi, are you really posting data to the form location? If this is  
truly the case, you can do something like the following:

BEGIN CODE:

require ‘net/http’  
require ‘uri’

url = " [http://localhost:3000/mycontroller/myaction](http://localhost:3000/mycontroller/myaction) "  
res = Net::HTTP.post\_form( URI.parse( url ), post\_data )

puts res.body

END CODE:

Note: The post data should be represented as a hash.

Good luck,

-Conrad

---

<div class="post-metadata">

**Author:** ![greg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/71c47a/32.png) [@greg](https://www.ruby-forum.com/u/greg)\
**Post date:** [March 5, 2007, 8:31am UTC](https://www.ruby-forum.com/t/routing-error-when-using-net-http-start-but-doesnt-occur/87687/4 "2007-03-05T08:31:42Z")

</div>

to give some more detail calling application is my PalPal stub, and it’s  
making a HTTP call to my application to simulate the PalPal IPN call.  
So  
all I have in my application is a “handle\_IPN” action in my PayPal  
controller. Does this clarify things?

I’ll try the “Net::HTTP.post\_form” approach instead of “Net::HTTP.start”  
then to see if this helps…I don’t fully understand the difference.  
Perhaps I need to use a Net:HTTP method that simulates a GET rather than  
a  
POST? (noting James’s point)

Tks  
Greg
