大久保と申します。

山口さんの作成された、 httpPost 関数を繰り返し呼ぶ分には何の問題も無さそうに見えますが、
「本当はこういう処理をしたい」というようなものが他にあれば、
動かないほうのコードをご提示頂くとアドバイスしやすいかもしれません。


(多分違うと思いますが、もし、 http の接続を維持したまま request を複数送る、いわゆる http pipelining
をやろうとされているのだとすると、恐らく標準の Net::HTTP では不可能なので、
https://github.com/drbrain/net-http-pipeline
 などを使うことになるのだろうと思いますが、あまり詳しくないです。すみません。)

On Tue, Dec 27, 2016 at 3:15 PM <yamataka / u08.itscom.net> wrote:

> 山口と申します。
>
> httpPostの関数を以下の様に定義しているのですが、
>
> def httpPost(ip,port,request_uri,arg)
>   request = Net::HTTP::Post.new(request_uri, initheader = {'Content-Type
> ' =>'application/json'})
>   request.body = JSON.generate(arg)
>
>   http = Net::HTTP.new(ip,port)
>   http.use_ssl = false
>   http.verify_mode = OpenSSL::SSL::VERIFY_NONE
>
>   response = nil
>   http.start do |h|
>     response = h.request(request)
>   end
>
>   return response.body
> end
>
> response.bodyに関して、
>
> https://docs.ruby-lang.org/ja/1.8.7/library/net=2fhttp.html の例3や4の様
> 
> http.start do … end の後で、処理する
>
> h.requestが1回で完結するならいいが、
> 複数回 h.request が呼び出された場合、最後の戻り値のrequest.body しか得ら
> れない?
> そもそも、この例は サンプルなので、h.request が 1回で完結する事前提?
>
> だとすると、
>
> http://satomemocho.blogspot.jp/2015/10/ruby-nethttp.html
> の “POSTの場合” のように、http.start do |h| 内で、requset.body 処理する
>
> 様に、自分のコードは記述した方がいいのかと思うが…
>
> どちらが正しい?のか、ご教示いただけますでしょうか?
>
>
>
>