使用方法:
使用patron,你可以实例化一个Session对象:sess = Patron::Session.new
sess.base_url = "http://search.twitter.com/"
然后调用方法,决定是使用:GET, HEAD, PUT, POST或DELETE操作,例如:
response = sess.get "search.json?q=ruby"
也可以发送自定义header:
sess.post("/foo/stuff", "some data", {"Content-Type" => "text/plain"})
源码位置:
安装方法:
windows/linux : gem install patron
API文档:
介绍:
patron实现了HTTP的下面几个方法[:get, :put, :post, :delete, :head, :copy]:
GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
关于HEAD方法的一些记录:
Head方法,它可以获取http头信息,其中的Content-Length就是文件的大小。在Http协议中,Head方法得到的响应和Get 方法相比,除了没有正文内容以外,其它都是一样的。也就是说:
Get:http头信息+内容
Head:http头信息
这样如果我们只关心http头,而不需要内容时,就可以使用Head方法了。
核心方法:
def request(action, url, headers, options = {})
req = Request.new
req.action = action
req.timeout = self.timeout
req.connect_timeout = self.connect_timeout
req.max_redirects = self.max_redirects
req.headers = self.headers.merge(headers)
req.username = self.username
req.password = self.password
req.upload_data = options[:data]
req.file_name = options[:file]
req.proxy = proxy
req.auth_type = auth_type
req.insecure = insecure
req.url = self.base_url.to_s + url.to_s
raise ArgumentError, "Empty URL" if req.url.empty?
handle_request(req)
enddef copy(url, dest, headers = {})
headers['Destination'] = dest
request(:copy, url, headers)
end
def delete(url, headers = {})
request(:delete, url, headers)
end
def get(url, headers = {})
request(:get, url, headers)
end
def get(url, headers = {})
request(:get, url, headers)
end
def get(url, headers = {})
request(:get, url, headers)
end
def post(url, data, headers = {})
request(:post, url, headers, :data => data)
end
def post_file(url, filename, headers = {})
request(:post, url, headers, :file => filename)
end
def put(url, data, headers = {})
request(:put, url, headers, :data => data)
end
def put_file(url, filename, headers = {})
request(:put, url, headers, :file => filename)
end