ruby: net/http的使用
网络::HTTP
Net::HTTP 提供了一个丰富的库,可用于构建 HTTP 用户代理。有关 HTTP 的更多详细信息,请参阅RFC2616。
Net::HTTP 旨在与 URI 密切合作。,并设计为与 Net::HTTP 一起使用。URI::HTTP#host
URI::HTTP#port
URI::HTTP#request_uri
如果您只执行几个 GET 请求,则应尝试 OpenURI。
简单示例
所有示例都假定您已使用以下命令加载了 Net::HTTP:
require 'net/http'
这也需要“uri”,因此您不需要单独要求它。
下一节中的 Net::HTTP 方法不保留连接。如果要执行许多 HTTP 请求,则不建议使用它们。
获取
Net::HTTP.get('example.com', '/index.html') # => String
按 URI 获取
uri = URI('http://example.com/index.html?count=10')
Net::HTTP.get(uri) # => String
使用动态参数获取
uri = URI('http://example.com/index.html')
params = { :limit => 10, :page => 3 }
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
puts res.body if res.is_a?(Net::HTTPSuccess)
发布
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body
具有多个值的 POST
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => ['ruby', 'perl'], 'max' => '50')
puts res.body
如何使用 Net::HTTP
以下示例代码可用作 HTTP 用户代理的基础,该用户代理可以使用持久连接执行各种请求类型。
uri = URI('http://example.com/some_path?query=string')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new uri
response = http.request request # Net::HTTPResponse object
end
Net::HTTP::start 会立即创建与 HTTP 服务器的连接,该服务器在块期间保持打开状态。如果服务器指示它支持持久连接,则该连接将对块中的多个请求保持打开状态。
如果您希望在多个 HTTP 请求中重用连接而不自动关闭它,则可以使用 ::new,然后调用和手动。#start
#finish
Net::HTTP 支持的请求类型在下面的“HTTP 请求类”一节中列出。
对于所有 Net::HTTP 请求对象和快捷方式请求方法,您可以为请求路径提供 String 或 Net::HTTP 将从中提取请求路径的 URI。
响应数据
uri = URI('http://example.com/index.html')
res = Net::HTTP.get_response(uri)
# Headers
res['Set-Cookie'] # => String
res.get_fields('set-cookie') # => Array
res.to_hash['set-cookie'] # => Array
puts "Headers:#{res.to_hash.inspect}"
# Status
puts res.code # => '200'
puts res.message # => 'OK'
puts res.class.name # => 'HTTPOK'
# Body
puts res.body if res.response_body_permitted?
重定向后
每个 Net::HTTPResponse 对象都属于其响应代码的类。
例如,所有 2XX 响应都是 Net::HTTPSuccess 子类的实例,3XX 响应是 Net::HTTPRedirection 子类的实例,200 响应是 Net::HTTPOK 类的实例。有关响应类的详细信息,请参阅下面的“HTTP 响应类”部分。
使用 case 语句,您可以正确处理各种类型的响应:
def fetch(uri_str, limit = 10)
# You should choose a better exception.
raise ArgumentError, 'too many HTTP redirects' if limit == 0
response = Net::HTTP.get_response(URI(uri_str))
case response
when Net::HTTPSuccess then
response
when Net::HTTPRedirection then
location = response['location']
warn "redirected to#{location}"
fetch(location, limit - 1)
else
response.value
end
end
print fetch('http://www.ruby-lang.org')
发布
可以使用 Net::HTTP::P ost 请求类进行 POST。此示例创建一个 URL 编码的 POST 正文:
uri = URI('http://www.example.com/todo.cgi')
req = Net::HTTP::Post.new(uri)
req.set_form_data('from' => '2005-01-01', 'to' => '2005-03-31')
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(req)
end
case res
when Net::HTTPSuccess, Net::HTTPRedirection
# OK
else
res.value
end
要发送 multipart/form-data,请使用:Net::HTTPHeader#set_form
req = Net::HTTP::Post.new(uri)
req.set_form([['upload', File.open('foo.bar')]], 'multipart/form-data')
可以使用相应的请求类 (Net::HTTP::P ut) 以相同的方式创建可以包含正文(如 PUT)的其他请求。
设置标题
下面的示例使用 If-Modified-Since 标头执行条件 GET。如果文件自标头中的时间以来未被修改,则将返回“未修改”响应。有关详细信息,请参阅 RFC 2616 第 9.3 节。
uri = URI('http://example.com/cached_response')
file = File.stat 'cached_response'
req = Net::HTTP::Get.new(uri)
req['If-Modified-Since'] = file.mtime.rfc2822
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
open 'cached_response', 'w' do |io|
io.write res.body
end if res.is_a?(Net::HTTPSuccess)
基本身份验证
基本身份验证根据RFC2617执行。
uri = URI('http://example.com/index.html?key=value')
req = Net::HTTP::Get.new(uri)
req.basic_auth 'user', 'pass'
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
puts res.body
流式响应正文
默认情况下,Net::HTTP 将整个响应读入内存。如果您正在处理大型文件或希望实现进度条,则可以改为将正文直接流式传输到 IO。
uri = URI('http://example.com/large_file')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new uri
http.request request do |response|
open 'large_file', 'w' do |io|
response.read_body do |chunk|
io.write chunk
end
end
end
end
HTTPS的
通过以下方式为 HTTP 连接启用 HTTPS。Net::HTTP#use_ssl=
uri = URI('https://secure.example.com/some_path?query=string')
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
request = Net::HTTP::Get.new uri
response = http.request request # Net::HTTPResponse object
end
或者,如果您只想发出 GET 请求,则可以传入具有 HTTPS URL 的 URI 对象。如果 URI 对象具有“https”URI 方案,则 Net::HTTP 会自动启用 TLS 验证。
uri = URI('https://example.com/')
Net::HTTP.get(uri) # => String
在以前的 Ruby 版本中,您需要需要 'net/https' 才能使用 HTTPS。这不再是真的。
代理
如果存在,Net::HTTP 将自动从环境变量创建代理。要禁用 ,请传递代理地址。http_proxy
http_proxy
nil
您还可以创建自定义代理:
proxy_addr = 'your.proxy.host'
proxy_port = 8080
Net::HTTP.new('example.com', nil, proxy_addr, proxy_port).start { |http|
# always proxy via your.proxy.addr:8080
}
有关更多详细信息和示例,请参阅 Net::HTTP.new,例如需要用户名和密码的代理。
压缩
Net::HTTP 会自动添加 Accept-Encoding 来压缩响应正文,并自动解压缩 gzip 和 deflate 响应,除非发送了 Range 标头。
可以通过 Accept-Encoding: 标识标头禁用压缩。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
вавада официальный сайт вавада официальный сайт вавада
world pharmacy india Online medicine order or top 10 pharmacies in india
https://cse.google.com.tj/url?q=https://medicinefromindia.com top online pharmacy india
buy prescription drugs from india cheapest online pharmacy india and best online pharmacy india top 10 pharmacies in india
http://expressrxcanada.com/# canadian pharmacy ed medications
canadian pharmacy store: Generic drugs from Canada - escrow pharmacy canada
medication from mexico pharmacy mexico drug stores pharmacies or buying prescription drugs in mexico
https://images.google.bt/url?sa=t&url=https://rxexpressmexico.com pharmacies in mexico that ship to usa
purple pharmacy mexico price list pharmacies in mexico that ship to usa and mexican pharmaceuticals online mexican border pharmacies shipping to usa
canadianpharmacy com legitimate canadian online pharmacies or canadian pharmacies compare
https://clients1.google.ws/url?q=https://expressrxcanada.com canadian family pharmacy
canadian discount pharmacy legal canadian pharmacy online and the canadian pharmacy legit canadian online pharmacy
https://expressrxcanada.com/# ed drugs online from canada
mexico pharmacies prescription drugs: RxExpressMexico - mexico drug stores pharmacies
best canadian pharmacy to buy from: ExpressRxCanada - canadapharmacyonline
world pharmacy india indian pharmacies safe or indian pharmacies safe
https://www.google.sn/url?q=https://medicinefromindia.com india online pharmacy
online pharmacy india india pharmacy and indian pharmacy online indian pharmacies safe
Medicine From India: MedicineFromIndia - MedicineFromIndia
online shopping pharmacy india india pharmacy mail order or indianpharmacy com
http://www.google.com.ph/url?q=http://medicinefromindia.com buy medicines online in india
best online pharmacy india reputable indian online pharmacy and indian pharmacy paypal world pharmacy india
http://expressrxcanada.com/# canadian world pharmacy
indian pharmacy online shopping indian pharmacy medicine courier from India to USA
Rx Express Mexico: mexican online pharmacy - mexican rx online
canadian drug pharmacy: Canadian pharmacy shipping to USA - canada rx pharmacy world
buying prescription drugs in mexico online п»їbest mexican online pharmacies or mexican mail order pharmacies
http://images.google.ad/url?q=https://rxexpressmexico.com purple pharmacy mexico price list
buying prescription drugs in mexico mexico drug stores pharmacies and mexican rx online purple pharmacy mexico price list
https://expressrxcanada.shop/# canadian pharmacy service
canada pharmacy canada drugstore pharmacy rx or ed drugs online from canada
http://mobile-bbs3.com/bbs/kusyon_b.php?http://expressrxcanada.com online pharmacy canada
buying drugs from canada canada drugs reviews and canadian pharmacy prices canadian pharmacy ed medications
indian pharmacy online: Medicine From India - Medicine From India
Medicine From India: Medicine From India - Medicine From India
indian pharmacy online best india pharmacy indian pharmacy online shopping
mexican rx online: mexican online pharmacy - mexican online pharmacy
canadian pharmacy online store: Generic drugs from Canada - canadian pharmacy prices
Online medicine home delivery indian pharmacies safe or indian pharmacies safe
https://todoticketsrd.com/?URL=https://medicinefromindia.com india pharmacy
india pharmacy mail order india pharmacy and online pharmacy india indianpharmacy com
http://expressrxcanada.com/# trustworthy canadian pharmacy
mexico drug stores pharmacies: RxExpressMexico - mexican online pharmacy
Medicine From India: Medicine From India - MedicineFromIndia
Rx Express Mexico mexico pharmacies prescription drugs Rx Express Mexico
best online canadian pharmacy: Express Rx Canada - safe canadian pharmacy
best online pharmacies in mexico best online pharmacies in mexico or mexico pharmacies prescription drugs
https://wiki.ood.ch/api.php?action=https://rxexpressmexico.com mexican rx online
mexico drug stores pharmacies mexico drug stores pharmacies and mexico pharmacies prescription drugs buying from online mexican pharmacy
https://medicinefromindia.com/# Medicine From India
Medicine From India: indian pharmacy - indian pharmacy online
best online canadian pharmacy canadian pharmacy checker or canadapharmacyonline
https://toolbarqueries.google.com.nf/url?sa=t&url=https://expressrxcanada.com canada drugstore pharmacy rx
canadian pharmacy price checker canadian pharmacy cheap and onlinecanadianpharmacy 24 canadian pharmacy no scripts
mexico pharmacies prescription drugs: Rx Express Mexico - mexico drug stores pharmacies
mexico drug stores pharmacies mexico drug stores pharmacies mexico drug stores pharmacies
mexican online pharmacy: mexico pharmacies prescription drugs - Rx Express Mexico
indian pharmacy: indian pharmacy online - top 10 online pharmacy in india
Rx Express Mexico: mexican online pharmacy - Rx Express Mexico
indian pharmacy online: indian pharmacy - indian pharmacy online
https://expressrxcanada.shop/# adderall canadian pharmacy
top 10 online pharmacy in india: Medicine From India - Medicine From India
canadian pharmacy online ship to usa: Express Rx Canada - canadian family pharmacy
canadian pharmacy tampa canadian pharmacy online canadian pharmacy 24h com safe
best canadian online pharmacy: Express Rx Canada - canadian drug pharmacy
http://rxexpressmexico.com/# mexico pharmacies prescription drugs
ed meds online canada: ExpressRxCanada - canadian pharmacy meds review
https://kamagraprix.shop/# Kamagra Oral Jelly pas cher
cialis generique: Cialis sans ordonnance pas cher - cialis sans ordonnance tadalmed.shop
Tadalafil 20 mg prix en pharmacie Achat Cialis en ligne fiable or Cialis en ligne
https://www.google.mu/url?q=https://tadalmed.com Pharmacie en ligne Cialis sans ordonnance
Acheter Cialis Acheter Viagra Cialis sans ordonnance and Cialis sans ordonnance 24h cialis prix
Cialis sans ordonnance pas cher cialis prix cialis generique tadalmed.com
Achat Cialis en ligne fiable: Achat Cialis en ligne fiable - Tadalafil 20 mg prix en pharmacie tadalmed.shop
Cialis sans ordonnance 24h: Tadalafil sans ordonnance en ligne - Tadalafil 20 mg prix en pharmacie tadalmed.shop
https://tadalmed.shop/# Achat Cialis en ligne fiable
Kamagra Commander maintenant: kamagra pas cher - Achetez vos kamagra medicaments
Pharmacie Internationale en ligne pharmacie en ligne france livraison internationale or Pharmacie sans ordonnance
https://cse.google.cat/url?q=https://pharmafst.com Achat mГ©dicament en ligne fiable
vente de mГ©dicament en ligne pharmacie en ligne france fiable and trouver un mГ©dicament en pharmacie pharmacie en ligne fiable
kamagra gel: kamagra 100mg prix - Kamagra Commander maintenant
https://kamagraprix.shop/# Kamagra Oral Jelly pas cher
pharmacie en ligne france livraison internationale pharmacie en ligne france livraison internationale or pharmacie en ligne fiable
https://www.google.hn/url?q=https://pharmafst.com acheter mГ©dicament en ligne sans ordonnance
pharmacie en ligne france pas cher pharmacie en ligne france livraison internationale and Pharmacie en ligne livraison Europe Pharmacie en ligne livraison Europe
https://kamagraprix.com/# Acheter Kamagra site fiable
acheter kamagra site fiable: kamagra livraison 24h - Kamagra Oral Jelly pas cher
Acheter Cialis 20 mg pas cher: Cialis en ligne - Tadalafil achat en ligne tadalmed.shop
https://tadalmed.shop/# Cialis sans ordonnance 24h
Tadalafil achat en ligne Acheter Cialis or Acheter Viagra Cialis sans ordonnance
http://www.ltlmjx.com/mobile/api/device.php?uri=http://tadalmed.com Pharmacie en ligne Cialis sans ordonnance
Acheter Cialis Cialis sans ordonnance 24h and cialis prix Tadalafil sans ordonnance en ligne
https://kamagraprix.shop/# kamagra 100mg prix
pharmacie en ligne france livraison internationale pharmacie en ligne fiable or pharmacie en ligne france livraison belgique
https://maps.google.co.zm/url?q=https://pharmafst.com pharmacie en ligne france livraison belgique
Pharmacie sans ordonnance pharmacie en ligne sans ordonnance and pharmacie en ligne france livraison internationale pharmacie en ligne france pas cher
Acheter Cialis 20 mg pas cher Cialis sans ordonnance 24h cialis prix tadalmed.com
Kamagra pharmacie en ligne: achat kamagra - achat kamagra
pharmacie en ligne sans ordonnance: Pharmacies en ligne certifiees - pharmacie en ligne france pas cher pharmafst.com
kamagra gel kamagra livraison 24h or acheter kamagra site fiable
https://images.google.ki/url?sa=t&url=https://kamagraprix.shop kamagra gel
Kamagra Oral Jelly pas cher kamagra en ligne and Kamagra Oral Jelly pas cher acheter kamagra site fiable
http://kamagraprix.com/# kamagra 100mg prix
Tadalafil 20 mg prix en pharmacie Cialis en ligne or Acheter Cialis
https://got4x4.com/source/tadalmed.com/ Tadalafil sans ordonnance en ligne
=]cialis generique Acheter Cialis 20 mg pas cher and Cialis en ligne Cialis sans ordonnance 24h
Acheter Cialis 20 mg pas cher: Cialis generique prix - Tadalafil 20 mg prix sans ordonnance tadalmed.shop
kamagra pas cher: Acheter Kamagra site fiable - kamagra pas cher
Achat mГ©dicament en ligne fiable: pharmacie en ligne livraison europe - Pharmacie Internationale en ligne pharmafst.com
Kamagra Commander maintenant kamagra 100mg prix kamagra en ligne
http://pharmafst.com/# Pharmacie sans ordonnance
Acheter Cialis: cialis prix - Cialis generique prix tadalmed.shop
п»їpharmacie en ligne france: pharmacie en ligne sans ordonnance - п»їpharmacie en ligne france pharmafst.com
pharmacie en ligne france fiable Pharmacie en ligne livraison Europe or Achat mГ©dicament en ligne fiable
https://images.google.ml/url?q=https://pharmafst.com trouver un mГ©dicament en pharmacie
trouver un mГ©dicament en pharmacie pharmacies en ligne certifiГ©es and pharmacie en ligne pas cher pharmacie en ligne france livraison internationale
Pharmacie Internationale en ligne: pharmacie en ligne - Pharmacie en ligne livraison Europe pharmafst.com
achat kamagra kamagra oral jelly or Kamagra Commander maintenant
https://cse.google.com.cu/url?sa=t&url=https://kamagraprix.shop kamagra en ligne
kamagra en ligne Achetez vos kamagra medicaments and kamagra pas cher Kamagra Commander maintenant
п»їpharmacie en ligne france pharmacie en ligne pas cher п»їpharmacie en ligne france pharmafst.shop
https://kamagraprix.shop/# kamagra gel
kamagra pas cher kamagra livraison 24h or achat kamagra
https://image.google.by/url?q=https://kamagraprix.com kamagra 100mg prix
kamagra en ligne acheter kamagra site fiable and kamagra pas cher kamagra 100mg prix
Acheter Kamagra site fiable: achat kamagra - kamagra 100mg prix
Acheter Kamagra site fiable: kamagra 100mg prix - Kamagra pharmacie en ligne
Acheter Cialis 20 mg pas cher: Tadalafil 20 mg prix sans ordonnance - cialis generique tadalmed.shop
Cialis en ligne Cialis sans ordonnance 24h or Tadalafil 20 mg prix en pharmacie
https://dramatica.com/?URL=https://tadalmed.com::: Tadalafil 20 mg prix sans ordonnance
Cialis sans ordonnance 24h Cialis en ligne and cialis generique Tadalafil achat en ligne
https://pharmafst.shop/# pharmacie en ligne france livraison internationale
Tadalafil achat en ligne Tadalafil achat en ligne Acheter Cialis tadalmed.com
Kamagra pharmacie en ligne: kamagra oral jelly - kamagra en ligne
kamagra gel: kamagra oral jelly - Kamagra Oral Jelly pas cher
acheter kamagra site fiable Kamagra pharmacie en ligne or Kamagra Commander maintenant
http://www.google.dk/url?q=http://kamagraprix.shop kamagra en ligne
Acheter Kamagra site fiable Kamagra pharmacie en ligne and Kamagra Commander maintenant Kamagra Commander maintenant
https://tadalmed.com/# Achat Cialis en ligne fiable
Cialis sans ordonnance 24h: cialis prix - Acheter Cialis 20 mg pas cher tadalmed.shop
Achat mГ©dicament en ligne fiable pharmacie en ligne sans ordonnance pharmacie en ligne sans ordonnance pharmafst.shop
pharmacie en ligne france livraison belgique pharmacie en ligne or pharmacie en ligne livraison europe
https://cse.google.gy/url?sa=t&url=https://pharmafst.com acheter mГ©dicament en ligne sans ordonnance
Pharmacie sans ordonnance trouver un mГ©dicament en pharmacie and pharmacie en ligne avec ordonnance acheter mГ©dicament en ligne sans ordonnance
acheter kamagra site fiable kamagra pas cher or acheter kamagra site fiable
https://rufox.ru/go.php?url=https://kamagraprix.com Kamagra Commander maintenant
kamagra 100mg prix kamagra en ligne and kamagra oral jelly Achetez vos kamagra medicaments
Pharmacie sans ordonnance: Meilleure pharmacie en ligne - Pharmacie en ligne livraison Europe pharmafst.com
Cialis sans ordonnance 24h: Cialis en ligne - Cialis en ligne tadalmed.shop
https://tadalmed.com/# Tadalafil sans ordonnance en ligne
pharmacie en ligne livraison europe: Meilleure pharmacie en ligne - pharmacies en ligne certifiГ©es pharmafst.com
Achat mГ©dicament en ligne fiable pharmacie en ligne sans ordonnance pharmacie en ligne france livraison internationale pharmafst.shop
Kamagra pharmacie en ligne: Kamagra Oral Jelly pas cher - kamagra pas cher
cialis sans ordonnance: Cialis sans ordonnance 24h - cialis sans ordonnance tadalmed.shop
https://tadalmed.com/# cialis prix
pharmacie en ligne livraison europe pharmacie en ligne pharmacie en ligne france livraison belgique pharmafst.shop
pharmacie en ligne france pas cher trouver un mГ©dicament en pharmacie or Pharmacie sans ordonnance
https://images.google.hn/url?sa=t&url=https://pharmafst.com acheter mГ©dicament en ligne sans ordonnance
Pharmacie sans ordonnance pharmacie en ligne pas cher and pharmacie en ligne pharmacie en ligne france pas cher
https://kamagraprix.com/# kamagra gel
pharmacie en ligne france fiable: pharmacie en ligne pas cher - acheter mГ©dicament en ligne sans ordonnance pharmafst.com
kamagra en ligne Kamagra Commander maintenant Kamagra pharmacie en ligne
Cialis sans ordonnance pas cher Cialis en ligne or cialis prix
https://www.bysb.net/jumppage.php?p=tadalmed.com Cialis sans ordonnance 24h
Acheter Cialis cialis sans ordonnance and Tadalafil 20 mg prix sans ordonnance Cialis en ligne
Kamagra Commander maintenant: achat kamagra - Acheter Kamagra site fiable
http://pharmafst.com/# acheter mГ©dicament en ligne sans ordonnance
http://kamagraprix.com/# kamagra 100mg prix
kamagra oral jelly
acheter kamagra site fiable: acheter kamagra site fiable - kamagra livraison 24h