【问题标题】:Ruby RestClient post request with cookies带有 cookie 的 Ruby RestClient 发布请求
【发布时间】:2015-02-14 03:59:25
【问题描述】:

我已经尝试了一个多星期了,没有高兴地发布一个 api 请求,用上一个请求中的值设置 cookie。第一个请求很好:

  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,我也知道发布请求最多应该有 3 个参数,我只是无法让它工作。我需要设置的 cookie 属性是 DYN_USER_CONFIRM 和 JSESSION。

【问题讨论】:

    标签: ruby api rest-client


    【解决方案1】:

    只看RestClient的文档:

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

    看起来您需要在请求中将 cookie 和标头设置为哈希。您发布的代码有cookies = ....,它不在请求中。我相信你也需要在哈希中设置标题。

    【讨论】:

    • 请添加指向您正在引用的特定文档页面的指针。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2016-08-04
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多