Register now and start sharing your code snippets.
A simple Python HTTP client
Python posted 9 days ago by christian
A simple HTTP client I had lying around that I wrote a long time ago. It supports cookies, redirects and stuff:
1 #!/usr/bin/env python 2 # 3 # Http 4 # 5 # A simple HTTP client that supports persistent cookies 6 # 7 8 import cookielib 9 import httplib 10 #httplib.HTTPConnection.debuglevel = 1 11 import urllib2 12 13 class Http: 14 def __init__(self, redirect_callback = None): 15 self.redirect_callback = redirect_callback 16 self.cookie_jar = cookielib.CookieJar() 17 self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor (self.cookie_jar)) 18 19 urllib2.install_opener(self.opener) 20 21 def get(self, url, headers = None): 22 request = urllib2.Request(url, headers = headers) 23 return self.execute_request(request) 24 25 def post(self, url, headers = None, parameters = None): 26 data = None 27 if parameters != None: 28 data = urllib.urlencode(parameters) 29 30 request = urllib2.Request(url, data, headers) 31 return self.execute_request(request) 32 33 def execute_request(self, request): 34 response = self.opener.open(request) 35 # Check for redirect, maybe better way to do this 36 if response.geturl() != request.get_full_url(): 37 if self.redirect_callback == None: 38 raise "Redirected to '" + response.geturl() + "' but no redirect callback defined" 39 else: 40 self.redirect_callback(response) 41 42 return response 43
Example of how to fetch a URL with Net:HTTP and Ruby
Ruby posted 5 months ago by christian
1 require 'net/http' 2 require 'net/https' 3 4 url = URI.parse('http://www.google.com/') 5 6 http = Net::HTTP.new(url.host, url.port) 7 8 http.open_timeout = http.read_timeout = 10 # Set open and read timeout to 10 seconds 9 http.use_ssl = (url.scheme == "https") 10 11 headers = { 12 'User-Agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12', 13 'If-Modified-Since' => '', 14 'If-None-Match' => '' 15 } 16 17 response, body = http.get(url.path, headers) 18 19 puts response.code 20 puts response.message 21 22 response.each {|key, val| puts key + ' = ' + val}
How to print all HTTP headers with PHP
PHP posted 8 months ago by christian
1 <ul> 2 <?php 3 foreach($_SERVER as $h=>$v) 4 if(ereg('HTTP_(.+)',$h,$hp)) 5 echo "<li>$h = $v</li>\n"; 6 header('Content-type: text/html'); 7 ?> 8 </ul>
Simple Mongrel HTTP server and custom Mongrel handler example
Ruby posted about 1 year ago by christian
1 # http://mongrel.rubyforge.org/rdoc/index.html 2 # gem install -y mongrel 3 require 'rubygems' 4 require 'mongrel' 5 6 # Usage: ruby mongrel_http_server.rb <host> <port> <docroot> 7 host = ARGV[0] || "127.0.0.1" 8 port = ARGV[1] || 80 9 docroot = ARGV[2] || "html/" 10 11 # Simple Mongrel handler that prints the current date and time 12 class HandlerExample < Mongrel::HttpHandler 13 def process(request, response) 14 response.start(200) do |head, out| 15 head["Content-Type"] = "text/html" 16 out.write Time.now 17 end 18 end 19 end 20 21 # Configure Mongrel and handlers 22 config = Mongrel::Configurator.new :host => host, :port => port do 23 listener do 24 uri "/", :handler => Mongrel::DirHandler.new(docroot) 25 uri "/handler_example", :handler => HandlerExample.new, :in_front => true 26 end 27 28 # CTRL+C to stop server 29 trap("INT") { stop } 30 run 31 end 32 33 # Start Mongrel 34 puts "Mongrel listening on '#{host}:#{port}', serving documents from '#{docroot}'." 35 config.join 36