阅读更多

9顶
1踩

编程语言

原创新闻 Net::HTTP Cheat Sheet(手册)

2010-01-19 17:04 by 副主编 zly06 评论(4) 有8199人浏览

      挪威的ruby开发者August Lilleaas最近整理了一些关于如何使用 Net::HTTP库的代码示例

      Net::HTTP被广泛的使用到许多库中,类似John Nunemaker’s的HTTParty和Paul DIx’s的高性能Typhoeus。作为标准库的一部分,Net::HTTP虽然没有简单好记的API,但也算是一个不错的可选方案。

Standard HTTP Request

require "net/http"
require "uri"

uri = URI.parse("http://google.com/")

# Shortcut
response = Net::HTTP.get_response(uri)

# Will print response.body
Net::HTTP.get_print(uri)

# Full
http = Net::HTTP.new(uri.host, uri.port)
response = http.request(Net::HTTP::Get.new(uri.request_uri))

Basic Auth

require "net/http"
require "uri"

uri = URI.parse("http://google.com/")

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth("username", "password")
response = http.request(request)

Dealing with response objects

require "net/http"
require "uri"

uri = URI.parse("http://google.com/")

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)

response.code             # => 301
response.body             # => The body (HTML, XML, blob, whatever)
# Headers are lowercased
response["cache-control"] # => public, max-age=2592000

POST form request

require "net/http"
require "uri"

uri = URI.parse("http://example.com/search")

# Shortcut
response = Net::HTTP.post_form(uri, {"q" => "My query", "per_page" => "50"})

# Full control
http = Net::HTTP.new(uri.host, uri.port)

request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({"q" => "My query", "per_page" => "50"})

response = http.request(request)

File upload - input type="file" style

require "net/http"
require "uri"

# Token used to terminate the file in the post body. Make sure it is not
# present in the file you're uploading.
BOUNDARY = "AaB03x"

uri = URI.parse("http://something.com/uploads")
file = "/path/to/your/testfile.txt"

post_body = []
post_body < < "--#{BOUNDARY}\r\n"
post_body < < "Content-Disposition: form-data; name=\"datafile\"; filename=\"#{File.basename(file)}\"\r\n"
post_body < < "Content-Type: text/plain\r\n"
post_body < < "\r\n"
post_body < < File.read(file)
post_body < < "\r\n--#{BOUNDARY}--\r\n"

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.body = post_body.join
request["Content-Type"] = "multipart/form-data, boundary=#{BOUNDARY}"

http.request(request)

SSL/HTTPS request

require "net/https"
require "uri"

uri = URI.parse("https://secure.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)
response.body
response.status
response["header-here"] # All headers are lowercase

SSL/HTTPS request with PEM certificate

require "net/https"
require "uri"

uri = URI.parse("https://secure.com/")
pem = File.read("/path/to/my.pem")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.cert = OpenSSL::X509::Certificate.new(pem)
http.key = OpenSSL::PKey::RSA.new(pem)
http.verify_mode = OpenSSL::SSL::VERIFY_PEER

request = Net::HTTP::Get.new(uri.request_uri)

REST methods

# Basic REST.
# Most REST APIs will set semantic values in response.body and response.code.
require "net/http"

http = Net::HTTP.new("api.restsite.com")

request = Net::HTTP::Post.new("/users")
request.set_form_data({"users[login]" => "quentin"})
response = http.request(request)
# Use nokogiri, hpricot, etc to parse response.body.

request = Net::HTTP::Get.new("/users/1")
response = http.request(request)
# As with POST, the data is in response.body.

request = Net::HTTP::Put.new("/users/1")
request.set_form_data({"users[login]" => "changed"})
response = http.request(request)

request = Net::HTTP::Delete.new("/users/1")
response = http.request(request)


查看更多的例子August’s net-http-cheat-sheet GitHub repo

  • 大小: 9.2 KB
来自: rubyinside
9
1
评论 共 4 条 请登录后发表评论
4 楼 sevk 2010-01-21 14:21
文中
post_body < < 应该改为:
post_body <<
3 楼 up2u0609 2010-01-21 14:18
值得好好看一看
2 楼 sevk 2010-01-21 14:17
学习。!!
1 楼 Hooopo 2010-01-20 09:59
不错!!!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • .net完整版本OA办公管理系统源码(十分经典)

    .net完整版本OA办公管理系统源码(十分经典)

  • .net OA项目

    .net OA项目开发环境:vs.net 2003 sql_server2K 1.http://218.7.68.91/office/default2.aspx 用户名:admin  口令:111111 给东北某上市公司开发的OA系统,用户、岗位、部门和权限实现的很好,功能挺全!最有价值的它完整的实现企业内部复杂的报表,就是那种不规则的报表.2.http://218.7.68.91/tcc

  • asp.net项目仿通达OA完整源码有数据库

    .net平台仿通达OA项目完整源码有数据库,值得学习,页面精美

  • ASP.Net MVC OA项目笔记<二>

    1.1.0 创建数据层 1.1.1 CZBK.ItcastOA.IDAL 引用 CZBK.ItcastOA.Model 1.2.1 给IDAL添加一个接口IUserInfoDal 里面写增删改查分页的接口方法 public interface IUserInfoDal { //查 IQueryable&lt;UserIn...

  • 一套经典的基于C#+ASP.NET开发OA系统的例子源代码及设计文档

    一套经典的基于C#+ASP.NET开发OA的例子源代码及设计文档

  • 北大青鸟OA毕业答辩项目及模板

    北大青鸟OA毕业答辩项目及模板北大青鸟OA毕业答辩项目及模板

  • APS.net(C#) 开发的OA系统

    一套简单的OA系统,带流程引擎、权限设置等基本功能。 采用APS.net(C#)开发,数据库采用SQL Server,内含sql文件,支持navicat导入。

  • c#.net 开发的oa

    oa,.net,vs2005+sql2000,面向对象 主要功能模块有: 个人考勤:上下班登记 外出登记 请假登记 出差登记 我的考勤记录 外出记录 请假记录 出差记录 工作计划:我的计划 计划管理 日程管理 新建安排 查看安排 通讯录: 联系人维护 员工通讯录 我的分组 增加联系人 内部邮件:发邮件 发件箱 收件箱 草稿箱 投诉意见:投诉意见 个人资料:密码修改 个人资料修改 记事本:查看记事本 新建内容 新闻: 新闻列表 我的会议:会议列表

  • 毕业论文 基于ASP技术的用户注册登录系统实现

    毕业论文------基于ASP技术的用户注册登录系统实现.doc

  • 。net 开发过程

    我去年7月接触.Net以来,为之而兴奋,并使用它作了几个项目。下面我把我这几个月以来使用.Net的一些体会告诉大家,也许有不对的地方,欢迎大家指正。    .Net Framework SDK分两部分:ASP.NET和WinForm。   大家都知道VB很流行,但大家知道VB的最成功最受欢迎的是什么吗?是Form的概念!在.Net中,Form的概念引入了。在ASP.NET中的Web Form和在WinForm应用程序中的WinForm。WinForm应用程序也相当于传统的桌面应用程序,跟开发VB中基于For

  • ASP.Net MVC OA项目笔记<一>

    1.1.1 新建空白解决方案CZBK.ItcastOA 1.2.1 添加类库 1.2.2 同上添加多个类库 生成的 class1.cs先不用删除,删了的后,后面可能没办法直接点引用 1.3.1 添加表现层WebApp 1.3.2 设置WebApp为启动项 1.4.1 因为我没有数据库,所以就自己创建了一个,里面随便填了些数据 1....

  • .net开发的过程

    拿一个小点的项目来说,不用管什么开发框架,页面中掺和数据库访问代码加逻辑实现代码,直接搞定即可 大一点的项目一般采用三层开发框架,前台表示层,基本逻辑层,数据访问层,数据库的设计... 一般来说,面向对象的开发流程,是先设计接口(当然此前已做好需求分析,进而有了设计文档,包括概要设计和详细设计,根据功能定义好了字段),然后设计数据库,主要是存储过程等等,其...

  • OA项目实施经验谈

    作为一名cio,我参与了很多用户oa项目的实施过程,慢慢的发现,oa虽然没有erp那么复杂,但也远远不是自己原来想像的那么简单。在此,根据我实施新思创oa的经验,很想和广大信息主管,也和客户交流一下,如何更好的实施oa。   实施步骤:   从oa工作整体来看,可分为建设与应用两个阶段,一套oa系统最终要通过实际应用才能体验出其价值,如应用不起来,再好的...

  • 开发神器的打造--开篇

    公司业务量比较大,接了很多项目,为了缩短开发周期老板让我牵头搭建了一个敏捷开发框架。我们主要的业务是做OA、CRM、ERP一类的管理系统,一个通用的后台搭出来,再配合一些快速开发的组件开发效率能提高很多。另外老板一再强调要支持APP开发,一次开发能部署到安卓和IOS上。作为开篇之作,先介绍一下该框架的功能点及技术点,后续的文章再按功能详细讲解。1.框架用到的技术(1)前台技术...

  • OA项目讲解

    1、树型结构设计(可以进行无限制分层,利用递归方法显示。应用于机构管理、模块管理) 2、Ajax技术(权限管理模块采用JQuery+二进制位操作,实现细粒度、无刷新权限控制,提高了运行效率,给用户带来更好的WEB体验) 3、扩展日历控件(实现细粒度会议管理) 4、图表打印(可将备打印内容转为嵌入Excal,实现人事管理中的员工档案的打印) 5、外网邮件(采用SMTP技术,实现外网邮件功能。应用于工

Global site tag (gtag.js) - Google Analytics