我已经尝试了一个多星期而没有高兴地发布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。
答案 0 :(得分:2)
查看RestClient
的文档:
response.cookies
# => {"_applicatioN_session_id" => "1234"}
response2 = RestClient.post(
'http://localhost:3000/',
{:param1 => "foo"},
{:cookies => {:session_id => "1234"}}
)
看起来您需要将Cookie和标头设置为请求内的哈希值。您发布的代码有cookies = ....
,但不在请求范围内。你需要在哈希中设置标题,我相信。