From: Park Heesob Date: 2008-04-17T00:36:37+09:00 Subject: Re: Looking for a net/http example 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