zoukankan      html  css  js  c++  java
  • How to POST Form Data Using Ruby(转) Anny

    From http://biodegradablegeek.com/2008/04/how-to-post-form-data-using-ruby/

    POSTing data on web forms is essential for writing tools and services that interact with resources already available on the web. You can grab information from your Gmail account, add a new thread to a forum from your own app, etc.

    The following is a brief example on how this can be done in Ruby using Net::HTTPand this POST form example.

    Looking at the source (interlacken.com/webdbdev/ch05/formpost.asp):

    <form method="POST" action="formpost.asp">
    <p><input type="text" name="box1″ size="20″ value="">
    <input type="submit" value="Submit" name="button1″></p>
    </form>
    We see two attributes are sent to the formpost.asp script when the user hits the submit button: A textbox named box1 and the value of the submit button, named Submit. If this form used a GET method, we would just fetch the URL postfixed with (for example) ?box1=our+text+here. Fortunately, Ruby’s Net::HTTP makes posting data just as easy.

    The Ruby code:

    #!/usr/bin/ruby
    
    require "uri"
    require "net/http"
    
    params = {'box1′ => 'Nothing is less important than which fork you use. Etiquette is the science of living. It embraces everything. It is ethics. It is honor. -Emily Post',
    'button1′ => 'Submit'
    }
    x = Net::HTTP.post_form(URI.parse('http://www.interlacken.com/webdbdev/ch05/formpost.asp'), params)
    puts x.body
    
    # Uncomment this if you want output in a file
    # File.open('out.htm', 'w') { |f| f.write x.body }
    Sending the value of button1 is optional in this case, but sometimes this value is checked in the server side script. One example is when the coder wants to find out if the form has been submitted – as opposed to it being the user’s first visit to the form – without creating a hidden attribute to send along w/ the other form fields. Besides, there’s no harm in sending a few more bytes.

    If you’re curious about URI.parse, it simply makes the URI easier to work with by separating and classifying each of its attributes, effectively letting the methods in Net::HTTP do their sole job only, instead of having to analyze and parse the URL. More info on this in the Ruby doc.

    Assuming no errors, running this example (ruby postpost or chmod a+x postpost.rb; ./postpost.rb) yields:

    <form method="POST" action="formpost.asp">
    <p><input type="text" name="box1″ size="20″ value="NOTHING IS LESS
    IMPORTANT THAN WHICH FORK YOU USE. ETIQUETTE IS THE
    SCIENCE OF LIVING. IT EMBRACES EVERYTHING. IT IS ETHICS.
    IT IS HONOR. -EMILY POST">
    <input type="submit" value="Submit" name="button1″></p>
    </form>
    In practice, you might want to use a more specialized library to handle what you’re doing. Be sure to check out Mechanize and Rest-client.

  • 相关阅读:
    Duang~Duang~Duang 还在使用jsfiddle和jsbin做在线前端代码展示和演示吗? 试试更强大的在线代码分享工具吧!
    如数据库一般访问互联网资源
    HTML5来了,7个混合式移动开发框架
    Three.js纹理贴图正方体旋转动画效果
    极客Web开发资源大荟萃#003
    精彩代码回放:jQuery实现的浏览器类型和版本检测
    响应式的全屏背景图片效果
    Delphi多线程编程之同步读写全局数据
    delphi与sqlite
    Delphi调用IE打开网页
  • 原文地址:https://www.cnblogs.com/limei/p/2038261.html
Copyright © 2011-2022 走看看