http请求不工作BullionVault API

2024-04-25 22:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用BullionVault API查看我的订单。在

我必须登录才能查看。
我的问题是,当我尝试使用HTTP请求登录时,我的控制台输出是BUllionVault登录页面的htmldom。在

我使用官方文件的要求 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)

我请求查看我的订单:

^{2}$

编辑
感谢@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 

但是我仍然有我的问题:最后一个请求响应是登录页面的htmldom。在

解决方案

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)

Tags: orhttpscomurlgetpageloginxml
1条回答
网友
1楼 · 发布于 2024-04-25 22:21:29

您是否将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)

相关问题 更多 >