带cookie的Ruby RestClient post请求

带cookie的Ruby RestClient post请求,ruby,api,rest-client,Ruby,Api,Rest Client,我已经尝试了一个多星期了,但没有任何乐趣发布一个api请求,用上一个请求的值设置cookies。第一个请求可以: response = RestClient.post ('http://api-qa1:8180/api/rest/GB/session'),'{"email":""}',:content_type => 'application/json' obj = JSON.parse(response) id = obj['id'] profileId = obj['profil

我已经尝试了一个多星期了,但没有任何乐趣发布一个api请求,用上一个请求的值设置cookies。第一个请求可以:

  response = RestClient.post ('http://api-qa1:8180/api/rest/GB/session'),'{"email":""}',:content_type => 'application/json'

obj = JSON.parse(response)
id = obj['id']
profileId = obj['profile_id']
@cookies = response.cookies
dyn = obj['verification_id']
jsessionid = @cookies['JSESSIONID']
puts jsessionid,dyn,profileID
我得到了一个响应和我需要的值,现在我想使用返回的'profile_id'(URi)、jsessionid(cookie)和dyn(cookie)值来形成我的第二个请求

  res = RestClient.post ("http://api-qa1:8180/api/rest/GB/profile/#{profileId}/cart/item"),
                    '{
                              "sku_id":"1234"
                              "product_id":"1234"
                              "quantity":"2"
                              "recommended":"false"
                         }',
                    headers = {
                        :content_type => 'application/json',

                        :userPrefLanguage => 'en-GB'

                    }
cookies = {'JSESSIONID' => jsessionid},{'DYN_USER_CONFIRM' => dyn }
我尝试了很多组合都没有用,这是我所能得到的,这给了我一个403,我也知道post请求最多应该有3个参数,我只是不能让它工作。我需要设置的cookies属性是
DYN_USER_CONFIRM and JSESSION.

只需查看
RestClient
的文档即可:

response.cookies
# => {"_applicatioN_session_id" => "1234"}

response2 = RestClient.post(
  'http://localhost:3000/',
  {:param1 => "foo"},
  {:cookies => {:session_id => "1234"}}
)

看起来您需要将cookie和头设置为请求内部的散列。您发布的代码包含
cookies=..
,它不在请求中。我相信您也需要在散列中设置标题。

请添加指向您正在引用的特定文档页面的指针。