From: Andrew Cowan Date: 2008-04-17T00:56:26+09:00 Subject: Re: Looking for a net/http example Thanks for posting that! -Andy Park Heesob wrote: > Hi, > ----- Original Message ----- > From: "Andrew Cowan" > To: "ruby-talk ML" > Sent: Thursday, April 17, 2008 12:15 AM > Subject: Looking for a net/http example > > > >> Hey folks, I am hoping someone can post a quick net/http example which >> illustrates a POST method call with multipart/related content, I think I >> am confused as to which info is specified in the headers and which is >> passed as data, an example would really hep and I'd be very grateful. >> >> Thanks, >> Andy >> >> >> > Here is some code snippet from gmailer.rb > > postdata = {} > postdata["msgbody"] = stripslashes(body) > postdata["from"] = stripslashes(from) if from > postdata["to"] = stripslashes(to) > postdata["subject"] = stripslashes(subject) > postdata["cc"] = stripslashes(cc) > postdata["bcc"] = stripslashes(bcc) > > boundary = "----#{Time.now.to_i}#{(rand(2000)*2147483.648).to_i}" > postdata2 = [] > postdata.each {|k,v| > postdata2.push("Content-Disposition: form-data; name=\"#{k}\"\r\n\r\n#{v}\r\n") > } > > files.each_with_index do |f,i| > content = File.open(f,'rb') { |c| c.read } > postdata2.push("Content-Disposition: form-data; name=\"file#{i}\"; filename=\"#{File.basename(f)}\"\r\n" + > "Content-Transfer-Encoding: binary\r\n" + > "Content-Type: application/octet-stream\r\n\r\n" + content + "\r\n") > end > > postdata = postdata2.collect { |p| > "--" + boundary + "\r\n" + p > }.join('') + "--" + boundary + "--\r\n" > > np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80) > response = nil > np.start { |http| > response = http.post(GM_LNK_GMAIL, postdata,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT,'Content-type' => 'multipart/form-data; boundary=' + boundary } ) > } > > If you want full source, try gem install gmailer > > Regards, > Park Heesob