http请求无效 - BullionVault API

时间:2016-05-24 11:35:36

标签: python api get httprequest

我使用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)

1 个答案:

答案 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)