Ruby 关于 Net::HTTP.get_response 请求时 Broken pipe 这个异常,大家怎么解决的?

cdredfox · 2012年11月03日 · 最后由 yakczh 回复于 2013年09月02日 · 4177 次阅读

我在使用 Net::HTTP.get_response 请求一个网址时,上于我需要传一些参数,正常情况下都是 ok 的,但是如果我要传送一个图片,对方给出的要求是将图片转换成 byte[] 数组后,再通过 http 请求传输过来。但我在 ruby 中使用 Net::HTTP.get_response 的时候,传递这个大的 byte 数组的时候,就会报 Broken pipe,大家以前碰到过类似的问题吗?有什么解决方案吗?

#读取图片,并转换成byte数组 
def read_image(image_url)
   uri = URI(image_url)    
   resp = Net::HTTP.get_response(uri)
   resp.body.bytes.to_a
 end

请求的代码片段,param_map 中放了那个图片流数组

uri = URI('http://gw.api.taobao.com/router/rest')
uri.query = URI.encode_www_form(param_map)
resp = Net::HTTP.get_response(uri)

发请求时对方把连接关闭了就会出现 broken pipe,你这个请求的 url 超级长,服务器不会处理的 一般传图片都是用 POST 吧,所以请用 post_form

get_response 怎么传 headers

需要 登录 后方可回复, 如果你还没有账号请 注册新账号