Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Робота с XML на стороне сервера ! 
:(
    Опции темы
TimeBreak
Дата 22.5.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: нет
Всего: -2



Всем привет ! Прошу помочь в таком вопросе :
Есть простой клиент
Код

#!/usr/bin/ruby

require 'rubygems'
require 'httpclient'
require 'builder'
require 'active_support'

def smp_request(http_method, url, options = {}) 
          return nil if url.nil? || url.size == 0
        #options["tokenid"] = "#{ROBOT_CLIENT_TOKEN}"
          p options if options.size > 0

          clnt = HTTPClient.new
          http_method = "get" unless ["get", "post"].include?(http_method)
          puts "url is:#{url}"
          begin
                   case http_method
                            when "get"
                                     puts "Request get ..."
                                     request = clnt.get(url, options)
                                     puts "Request get ... executed"    
                                request.body 
                            when "post"
                                     puts "Request post ..."    
                                     request = clnt.post(url, options)
                                     puts "Request post ... executed" 
                                request.body         
           end
          rescue
                   puts "There is error"
                   return nil
          else 
                   puts "Request status = #{request.status}"
                   return request
          end 
end

puts "Input Name :"
name = gets.chomp
puts "Input Mail :"
mail = gets.chomp
puts "Input Pass :"
pass = gets.chomp

host = "http://localhost:3000/users/post"
method = "post"
data = {:login => name, :mail => mail, :password => pass}

resp = smp_request(method, host, data)
puts resp.body




отсылающий на сервер некие данные, код метода простой 
Код

  def post
    @user = User.new(:login => params[:login], :email => params[:mail], :password => params[:password])
    
    respond_to do |accepts|
            if @user.save
                      accepts.html
                      accepts.xml { render :xml => @user.to_xml(:except => [:created_at, :updated_at]) }
        else
                format.html { render :action => "new" }
                format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
              end        
    end
  end


Юзер на стороне сервера создается и в соответствующем отображение в браузере это видно  !!!
Хотелось бы что бы в ответ от сервера приходил XML файл с данными только что созданного юзера, но приходит непонятно что ....  

Помогите разобрать ! Спасибо !
PM MAIL   Вверх
c0va23
Дата 23.5.2011, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2010

Репутация: нет
Всего: 3



Можно "непонятно что" в студию? 
Скорее всего там то что надо. А если нужно контролировать вывод модели в xml, то можно перегрузить метод .to_xml в модели.
PM MAIL   Вверх
TimeBreak
Дата 6.6.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: нет
Всего: -2



Извините за отсутствие.....
Выдает вот что
Код

gafas@amd64:~/ruby-prj/test/client$ ruby client.rb 
Input Name :
newuser
Input Mail :
[email protected]
Input Pass :
dwadh12r125j9
{:password=>"dwadh12r125j9", :mail=>"[email protected]", :login=>"newuser"}
url is:http://localhost:3000/users/post
Request post ...
Request post ... executed
Request status = 200
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Users: post</title>
  <link href="/stylesheets/scaffold.css?1305814003" media="screen" rel="stylesheet" type="text/css" />
</head>
<body>

<p style="color: green"></p>

xml.instruct!
xml.users do
  @user.each do |user|
    xml.user do
      xml.user user.login
      xml.pass user.password
      xml.email user.email
    end
  end
end



</body>
</html>



Юзер при этом создается !!!
 

Это сообщение отредактировал(а) TimeBreak - 6.6.2011, 19:33
PM MAIL   Вверх
c0va23
Дата 6.6.2011, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2010

Репутация: нет
Всего: 3



В общем нужно к строке запроса в конец добавить формат возвращаемых данных, а именно '.xml'. Должно помочь.   
PM MAIL   Вверх
TimeBreak
Дата 6.6.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: нет
Всего: -2



Типа этого :
Код

[color=red]host = "http://localhost:3000/users/post.xml"[/color]
method = "post"
data = {:login => name, :mail => mail, :password => pass}
resp = smp_request(method, host, data)


Добавлено @ 20:42
при такой подстановке выдает :
Код

gafas@amd64:~/ruby-prj/test/client$ ruby client.rb 
Input Name :
username
Input Mail :
[email protected]
Input Pass :
124sf12ts
{:password=>"124sf12ts", :mail=>"[email protected]", :login=>"username"}
url is:http://localhost:3000/users/post.xml
Request post ...
Request post ... executed
Request status = 405
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Action Controller: Exception caught</title>
  <style>
    body { background-color: #fff; color: #333; }

    body, p, ol, ul, td {
      font-family: verdana, arial, helvetica, sans-serif;
      font-size:   13px;
      line-height: 18px;
    }

    pre {
      background-color: #eee;
      padding: 10px;
      font-size: 11px;
    }

    a { color: #000; }
    a:visited { color: #666; }
    a:hover { color: #fff; background-color:#000; }
  </style>
</head>
<body>

<h1>
  ActionController::MethodNotAllowed
  
</h1>
<pre>Only get, put, and delete requests are allowed.</pre>



<p><code>RAILS_ROOT: /home/gafas/ruby-prj/test</code></p>

<div id="traces">
  
    
    <a href="#" onclick="document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Application-Trace').style.display='block';; return false;">Application Trace</a> |
  
    
    <a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='block';; return false;">Framework Trace</a> |
  
    
    <a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='block';; return false;">Full Trace</a> 
  

  
    <div id="Application-Trace" style="display: block;">
      <pre><code>/usr/lib/ruby/1.8/action_controller/routing/recognition_optimisation.rb:64:in `recognize_path'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:441:in `recognize'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:436:in `call'</code></pre>
    </div>
  
    <div id="Framework-Trace" style="display: none;">
      <pre><code>/usr/lib/ruby/1.8/action_controller/routing/recognition_optimisation.rb:64:in `recognize_path'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:441:in `recognize'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:436:in `call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:in `dispatch'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in `_call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:130:in `build_middleware_stack'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:9:in `cache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:28:in `call'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:in `call'
/usr/lib/ruby/1.8/rack/head.rb:9:in `call'
/usr/lib/ruby/1.8/rack/methodoverride.rb:24:in `call'
/usr/lib/ruby/1.8/action_controller/params_parser.rb:15:in `call'
/usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:in `call'
/usr/lib/ruby/1.8/action_controller/failsafe.rb:26:in `call'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `call'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `synchronize'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:114:in `call'
/usr/lib/ruby/1.8/action_controller/reloader.rb:34:in `run'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:108:in `call'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/rails/rack/static.rb:31:in `call'
/usr/lib/ruby/1.8/rack/urlmap.rb:47:in `call'
/usr/lib/ruby/1.8/rack/urlmap.rb:41:in `each'
/usr/lib/ruby/1.8/rack/urlmap.rb:41:in `call'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/rails/rack/log_tailer.rb:17:in `call'
/usr/lib/ruby/1.8/rack/content_length.rb:13:in `call'
/usr/lib/ruby/1.8/rack/chunked.rb:15:in `call'
/usr/lib/ruby/1.8/rack/handler/mongrel.rb:67:in `process'
/usr/lib/ruby/1.8/rack/handler/mongrel.rb:38:in `run'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/commands/server.rb:111
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3</code></pre>
    </div>
  
    <div id="Full-Trace" style="display: none;">
      <pre><code>/usr/lib/ruby/1.8/action_controller/routing/recognition_optimisation.rb:64:in `recognize_path'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:441:in `recognize'
/usr/lib/ruby/1.8/action_controller/routing/route_set.rb:436:in `call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:87:in `dispatch'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:121:in `_call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:130:in `build_middleware_stack'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/1.8/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:9:in `cache'
/usr/lib/ruby/1.8/active_record/query_cache.rb:28:in `call'
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/usr/lib/ruby/1.8/action_controller/string_coercion.rb:25:in `call'
/usr/lib/ruby/1.8/rack/head.rb:9:in `call'
/usr/lib/ruby/1.8/rack/methodoverride.rb:24:in `call'
/usr/lib/ruby/1.8/action_controller/params_parser.rb:15:in `call'
/usr/lib/ruby/1.8/action_controller/session/cookie_store.rb:93:in `call'
/usr/lib/ruby/1.8/action_controller/failsafe.rb:26:in `call'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `call'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `synchronize'
/usr/lib/ruby/1.8/rack/lock.rb:11:in `call'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:114:in `call'
/usr/lib/ruby/1.8/action_controller/reloader.rb:34:in `run'
/usr/lib/ruby/1.8/action_controller/dispatcher.rb:108:in `call'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/rails/rack/static.rb:31:in `call'
/usr/lib/ruby/1.8/rack/urlmap.rb:47:in `call'
/usr/lib/ruby/1.8/rack/urlmap.rb:41:in `each'
/usr/lib/ruby/1.8/rack/urlmap.rb:41:in `call'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/rails/rack/log_tailer.rb:17:in `call'
/usr/lib/ruby/1.8/rack/content_length.rb:13:in `call'
/usr/lib/ruby/1.8/rack/chunked.rb:15:in `call'
/usr/lib/ruby/1.8/rack/handler/mongrel.rb:67:in `process'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/usr/lib/ruby/1.8/rack/handler/mongrel.rb:38:in `run'
/home/gafas/ruby-prj/test/vendor/rails/railties/lib/commands/server.rb:111
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3</code></pre>
    </div>
  
</div>






<h2 style="margin-top: 30px">Request</h2>
<p><b>Parameters</b>: <pre>{&quot;mail&quot;=&gt;&quot;[email protected]&quot;,
 &quot;login&quot;=&gt;&quot;username&quot;,
 &quot;password&quot;=&gt;&quot;124sf12ts&quot;}</pre></p>

<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
<div id="session_dump" style="display:none"><pre class='debug_dump'>--- 
</pre></div>


<h2 style="margin-top: 30px">Response</h2>
<p><b>Headers</b>: <pre>{&quot;Content-Type&quot;=&gt;&quot;&quot;,
 &quot;Allow&quot;=&gt;&quot;GET,
 PUT,
 DELETE&quot;,
 &quot;Cache-Control&quot;=&gt;&quot;no-cache&quot;}</pre></p>



</body>
</html>



Пользователь при этом не создается !!!!

Это сообщение отредактировал(а) TimeBreak - 6.6.2011, 20:44
PM MAIL   Вверх
TimeBreak
Дата 7.6.2011, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 18.3.2009

Репутация: нет
Всего: -2



Возможно проблема в конфигах где то, в файле маршрутизации или еще где то .... выложу свой routes.rb
Код

ActionController::Routing::Routes.draw do |map|
  map.resources :users
 
  map.root :controller => "home"
 
  map.connect ':controller/:service.wsdl', :action =>'wsdl'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
  map.connect ':controller/:action/:login'
  map.connect ':controller/:action/:login.:format'

PM MAIL   Вверх
c0va23
Дата 7.6.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.11.2010

Репутация: нет
Всего: 3



Во первых map.connect ':controller/:action/:id' и map.connect ':controller/:action/:login' перехватывают одни и те же вызовы и это не хорошо.
Во вторых попробуйте строку map.resources :users перенести вниз.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.