对于GET请求: -
response = Typhoeus::Request.get("http://localhost:3000/users/1.json?oauth_token=12")
这将完美地返回Json响应。
邮政请求: -
response = Typhoeus::Request.post("http://localhost:3000/users/1.json?oauth_token=12",:params => {'[user][city]' => params[:location]})
无效...
这是返回路由错误。
更新: -
登录此API后呼叫正在运行..
response = Typhoeus::Request.post(API_SERVER_ADDRESS + "user_sessions.json" + API_OAUTH_TOKEN, :params => {'[user_session][email]' => params[:email], '[user_session][password]' =>params[:password]})
在路线中
resources :users
并且网络http请求也正常运行..
更新
例如来自rails log的http请求是: -
Parameters: {"commit"=>"Update", "authenticity_token"=>"8nvzCd0GF9IxjMcTfHOMJTPnycVPNIENMoMff8w4qAI=", "utf8"=>"✓", "id"=>"1", "user"=>{ "city"=>"abc"}}
现在我想发送同样的请求..
答案 0 :(得分:1)
:params参数应该是你的parms的哈希,意思是键值对,所以可能是这样的:
response = Typhoeus::Request.post("http://localhost:3000/users/1.json?oauth_token=12",:params => {:user => 'u', :city => 'c', :location => 'l'})
......或某些 - 无论价值是什么,无论价值是多少。我认为你原来的东西并没有转化成你想要做的有意义的哈希。
另外,请检查路由,以确保您正在尝试执行的操作已正确路由。
答案 1 :(得分:1)
这是解决方案
来自this
response = Typhoeus::Request.put(API_SERVER_ADDRESS + "users/" +user_id + ".json" ,:params => {:oauth_token=>'12', :user=>{:city => params[:location]}})
答案 2 :(得分:0)
确保您在POST
文件中声明了单独的routes.rb
路线。即使URL相同,不同的HTTP方法也需要不同的路由。
使用resources :users
默认情况下会提供以下内容:
GET /users/new # new
POST /users # create
GET /users/:id # show
GET /users/:id/edit # edit
PUT /users/:id # update
DELETE /users/:id # destroy