Restful API - 将cookie传递给后续的POST请求

时间:2016-09-05 10:04:16

标签: python jsessionid

我想查询的应用程序需要Json格式。支持的方法是POST。我似乎无法找到一个很好的例子,说明如何从1个查询中获取cookie并将其传递给另一个查询(或使后续查询将其用作base package的一部分。你能告诉我我做错了吗? / p>

import json
import requests
headers = {'Content-type': 'application/json'}
data = {"username":"user1", "password":"pass1"}
login_info = json.dumps(data)

session = requests.Session()

login_url = 'https://ip/login'
response = session.post(login_url, data=login_info, headers=headers, verify=False)
print session.cookies.get_dict()
#returns the following format- {'JSESSIONID': 'DE1EE0006D53EABFA4EE0C6A50D1386A'}

query_url = 'https://ip/query'
response = session.post(query_url, cookies=session.cookies.get_dict(), headers=headers, verify=False)

print response.text
#retuns  +++++++++++++++  JSESSIONID is empty! +++++++++++++

1 个答案:

答案 0 :(得分:-1)

此链接可能解决您的问题:Apache HttpClient 4.0.3 - how do I set cookie with sessionID for POST request查看Cookie路径调整部分...您可能需要在第二次HTTP Post请求之前执行此操作。

您可以捕获HTTP请求,响应(例如使用Firebug或Chrome),同时(1)手动尝试登录和查询页面,(2)对您的脚本执行相同操作,然后根据需要消毒那些并在那里张贴这些?这将使我们能够更好地帮助您。谢谢。

备注/额外阅读材料:

1)如果您在使用Firebug时需要帮助 - 这里有一个链接:How to debug the http response headers from a HTTP call

2)关于jsessionID的一些额外信息:

http://www.cs-repository.info/2014/07/understanding-jsessionid.html

3)此链接对cookie和上下文有一个有趣的解释:http://www.cs-repository.info/2014/04/sharing-jsessionid-across-applications.html 它可能澄清了您面临的问题背后的真正原因(尽管服务器端解决方案不适用于您)。请搜索文本" AppOne / one.jsp"并从那一点开始阅读,以便能够快速完成阅读。