Post request of digest auth

m fighting with post request of digest auth a few days and still can't
get how to send json body. Please help me! Server told that i got in,
but by json was not used. i'm using net/http/digest_auth gem. Is i think
json must be placed in the right place, but I don't now where. Thanks a
lot!

def post_data
  uri = URI.parse 'http://somelink.com'
  uri.user = 'test'
  uri.password = 'test'

  data = {:ID => "123456789", :name => "me"}
  data_type = JSON.generate(data)

  digest_auth = Net::HTTP::DigestAuth.new

  h = Net::HTTP.new uri.host, uri.port
  h.set_debug_output $stderr

  req = Net::HTTP::Post.new uri.request_uri
  res = h.request req

  www_auth_response = res['www-authenticate']
  www_auth_response["algorithm=\"MD5\""] = "algorithm=MD5"
  auth = digest_auth.auth_header uri, www_auth_response, 'POST'

  req = Net::HTTP::Post.new uri.request_uri
  req.add_field 'Authorization', auth
  req.content_type= "application/json"
  req.body = data_type

  res = h.request req
  puts res.code
  return
end

···

--
Posted via http://www.ruby-forum.com/.

I am unsure what `www_auth_response` is suppose to do.
Also you have `return` at the end of the `post_data` method which is
probably not what you want.
What does the server side request look like when you call this post method?

···

On Tue, Jun 11, 2013 at 3:58 AM, Kirill Grin <lists@ruby-forum.com> wrote:

m fighting with post request of digest auth a few days and still can't
get how to send json body. Please help me! Server told that i got in,
but by json was not used. i'm using net/http/digest_auth gem. Is i think
json must be placed in the right place, but I don't now where. Thanks a
lot!

def post_data
  uri = URI.parse 'http://somelink.com'
  uri.user = 'test'
  uri.password = 'test'

  data = {:ID => "123456789", :name => "me"}
  data_type = JSON.generate(data)

  digest_auth = Net::HTTP::DigestAuth.new

  h = Net::HTTP.new uri.host, uri.port
  h.set_debug_output $stderr

  req = Net::HTTP::Post.new uri.request_uri
  res = h.request req

  www_auth_response = res['www-authenticate']
  www_auth_response["algorithm=\"MD5\""] = "algorithm=MD5"
  auth = digest_auth.auth_header uri, www_auth_response, 'POST'

  req = Net::HTTP::Post.new uri.request_uri
  req.add_field 'Authorization', auth
  req.content_type= "application/json"
  req.body = data_type

  res = h.request req
  puts res.code
  return
end

--
Posted via http://www.ruby-forum.com/\.