我想查询的应用程序需要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! +++++++++++++
答案 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"并从那一点开始阅读,以便能够快速完成阅读。