Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何向rails应用程序发送http post请求以获得json响应_Ruby On Rails_Json_Post_Typhoeus - Fatal编程技术网

Ruby on rails 如何向rails应用程序发送http post请求以获得json响应

Ruby on rails 如何向rails应用程序发送http post请求以获得json响应,ruby-on-rails,json,post,typhoeus,Ruby On Rails,Json,Post,Typhoeus,对于GET its请求:- 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]' => pa

对于GET its请求:-

 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 post调用正在工作

     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
而且web http请求工作得非常好

更新

例如,来自rails日志的http请求是:--


现在我想发送相同类型的请求。

参数:params应该是parms的散列,表示键值对,因此可能类似于:

response = Typhoeus::Request.post("http://localhost:3000/users/1.json?oauth_token=12",:params => {:user => 'u', :city => 'c', :location => 'l'})
…或诸如此类-无论参数是什么,无论值是什么。我认为,你的原创并没有转化为你想要做的事情的有意义的散列


此外,请检查您的路由,以确保您尝试执行的操作已正确路由。

确保您已在
路由.rb
文件中声明了单独的
POST
路由。即使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
这是解决办法


如果你能解释一下你想通过的PARM,我可以用适当的代码更新我的例子。我恐怕我会有平底船,我被难住了。您将工作登录调用发布到哪个API服务?另一端是你写的吗?只是问一下,因为github站点()上的Typhous Basic没有显示类似的内容:您正在使用的参数设置,以括号中的字符串作为键。。。自述文件中的所有内容都是直接的键值对。如果可以的话,那么我就不熟悉这个特殊的语法。@yardboy他们会如何重新格式化这个:params=>{'[user_session][email]=>params[:email],'[user_session][password]=>params[:password]})或者“user”=>{city=>“abc”}可能类似于::params=>{:user_session=>{'email'=>params[:email],“password=>params[:password]}这就是控制器中的params散列的样子,例如,如果所有这些都是从以标准方式构建的表单中获取的,即您将以params[:user_session]['email']和params[:user_session]['password'访问电子邮件和密码数据。我已经试过了。。但这根本不起作用。在路由其资源中:用户扫描您发布服务器日志的输出?很难粘贴该日志,然后在编辑器中对齐。因此请检查此屏幕截图。同时,我正在尝试更新问题。这看起来更像服务器响应对象。您正在运行
rails服务吗呃
在终端中?这就是我要寻找的输出。@luke Yupp..基本上我已经在ruby on rails中开发了带有内置json api响应调用的web应用程序。现在我正在移动站点上工作..这就是我遇到的问题。
GET     /users/new        # new
POST    /users            # create
GET     /users/:id        # show
GET     /users/:id/edit   # edit
PUT     /users/:id        # update
DELETE  /users/:id        # destroy
 response = Typhoeus::Request.put(API_SERVER_ADDRESS + "users/" +user_id + ".json" ,:params => {:oauth_token=>'12', :user=>{:city => params[:location]}})