From: Hironori Ohtsubo Date: 2001-05-23T21:34:30+09:00 Subject: [ruby-list:29768] Re: http.rb と IIS 大坪です 自己解決しました。 問題は「Content-Type」を指定していなかったためでした。 ヘッダ情報なしで送信すると、IISでは、「Content-Type」になにもセットされずに 処理されるようです。 ですので、 http.post2('/hoge/hoge.asp', data) do |recv| の箇所を、 http.post2('/hoge/hoge.asp', data, {'Content-Type'=>'application/x-www-form-urlencoded'}) do |recv| とすれば問題がなくなりました。 > 大坪です。 > > net/http を利用して、httpクライアントのプログラミングをしているのですが、 > POSTでのデータ送信に悩んでいます。 > クライアント側でPOSTしたフォームデータが、ASPのRequest.Formで読めないのです。 > > 下記にソースを書きます。 > > ここで、サーバ側2の方法のバイナリでデータを読もうとすると読めるのですが、 > (実行すると正しくデータが読める) > サーバ側1の方法のRequest.Formでテキストでデータを読もうとしても読めないのです。 > (実行してもデータがなにも表示されない) > > このクライアントのソースで、サーバをlinux + apache + rubyのプログラムで > 読み込むと全く問題はありませんでした。 > > どなたかこの原因が分かる方がいらっしゃれば、アドバイスをよろしくお願いします。 > > > <環境> > クライアント側:Linux7.0J + ruby 1.6.3 > サーバ側:Windows2000 + IIS5 + ASP > > <プログラム> > クライアント側 > --------------------------------------------------------------------- > require 'net/http' > data = "hoge=123&hohho=abc" > Net::HTTP.start('x.x.x.x', '80', 'y.y.y.y', '3128') do |http| > http.post2('/hoge/hoge.asp', data) do |recv| > puts recv.body > end > end > > > サーバ側1 > --------------------------------------------------------------------- > <%@ Language=VBScript %> > > > > > > <% > For Each x In Request.Form > Response.Write Request.Form(x) > Next > %> > > > > サーバ側2 > --------------------------------------------------------------------- > <%@ Language=VBScript %> > > > > > > <% > total_size = Request.TotalBytes > bin_read = Request.BinaryRead(total_size) > Response.BinaryWrite(bin_read) > %> > > > > *------------- - - - > | 大坪 裕典 > | > +------------------------------ - - > *------------- - - - | 大坪 裕典 | +------------------------------ - -