ruby http重名參數請求問題

發表于:2012-10-18來源:futurehandw作者:吳穎敏點擊數: 標簽:ruby
Jason在做web service自動化測試平臺的時候遇到ajax傳回的數據,rails中無法利用 Ruby Net::HTTP post正確傳值,這里將解決方案做下memory。

  Jason在做web service自動化測試平臺的時候遇到ajax傳回的數據,rails中無法利用 Ruby Net::HTTP post正確傳值,這里將解決方案做下memory。

  Problem:

  params1["a"] = ['int','int']

  params1["b"] = ['string','string']

  uri = URI.parse(“http://XX.XX.XX.XX/invoke.json”)

  res = Net::HTTP.post_form(uri, params1)

  傳值出現 b=stringstring&a=intint的情況。

  Reason:

  察看NET::HTTP發現 post_form最終調用的 set_form_data 的問題。

  Solution:

  修改代碼增加對子value的判斷

  def set_form_data(request, params, sep = ‘&’)

  request.body = params.map {|k,v|

  if v.instance_of?(Array)

  v.map {|e| “#{urlencode(k.to_s)}=#{urlencode(e.to_s)}”}.join(sep)

  else

  “#{urlencode(k.to_s)}=#{urlencode(v.to_s)}”

  end

  }.join(sep)

  request.content_type = ‘application/x-www-form-urlencoded’

  end

  def urlencode(str)

  str.gsub(/[^a-zA-Z0-9_\.\-]/n) {|s| sprintf(‘%%%02x’, s[0]) }

  end

自動化測試優化的路還很長,walking on
:)

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97