我使用BullionVault API查看订单。
我必须登录才能查看。
我的问题是,当我尝试使用HTTP请求登录时,我的控制台输出是BUllionVault登录页面的HTML DOM。
我使用官方文档中的请求 https://www.bullionvault.com/help/xml_api.html和python语言。
我的登录请求:
payload2 = {'j_username': 'myusername', 'j_password': 'mypassword'}
requests.get("https://or.bullionvault.fr/secure/login.do", params=payload2)
我查看订单的请求:
requests.get("https://or.bullionvault.fr/secure/view_orders_xml.do")
编辑:
感谢@Vikas,我更新了我的代码。
login_page_url = "https://or.bullionvault.fr/secure/login.do"
login_page_url2 = "https://live.bullionvault.com/secure/j_security_check"
payload2 = {'j_username': 'myusername', 'j_password': 'mypassword'}
with requests.Session() as s:
a = s.get(login_page_url)
print(s.cookies)
b = s.get(login_page_url2, params = payload2)
c = s.get("https://or.bullionvault.fr/secure/view_orders_xml.do")
print(a) #output status 200
print(b) #output status 200
print(c) #output status 200
print(c.text) #output HTML DOM
但是我仍有问题:上次请求响应是登录页面的HTML DOM。
解决方案:
Bullionvault将其API更新为2.0版。 我的代码中也缺少参数。
login_page_url = "https://or.bullionvault.fr/secure/login.do"
login_page_url2 = "https://live.bullionvault.com/secure/j_security_check"
payload2 = {'j_username': 'myusername', 'j_password': 'mypassword'}
payload3 = {'confirmed': 'true'}
payload4 = {'simple': 'true'}
with requests.Session() as s:
a = s.get(login_page_url)
b = s.post(login_page_url2, data = payload2)
c = s.get("https://live.bullionvault.com/secure/api/v2/view_orders_xml.do", params = payload3)
d = s.get("https://live.bullionvault.com/secure/api/v2/view_balance_xml.do", params = payload4)
答案 0 :(得分:1)
您是否通过后续请求传递JSESSIONID?在文档中,明确提到登录后您将获得JESSIONID
Please note that our webservers use a session cookie to track your login session (JSESSIONID)
你应该在标题
中传递它们headers = { 'Cookie': 'JSESSIONID=<value>'}
requests.get("https://or.bullionvault.fr/secure/view_orders_xml.do", headers=headers)