我试图从API(oanda)获得简单的JSON货币汇率回复 但是会收到各种错误代码,例如语法无效'。
这是我更新的代码:
import requests
import json
from optparse import OptionParser
def connect_to_stream():
"""
Environment <Domain>
fxTrade stream-fxtrade.oanda.com
fxTrade Practice stream-fxpractice.oanda.com
sandbox stream-sandbox.oanda.com
"""
# Replace the following variables with your personal ones
domain = 'stream-fxpractice.oanda.com'
access_token = 'xxxxxxxxxxxxxxxx'
account_id = 'xxxxxxxxx'
instruments = "EUR_USD"
try:
s = requests.Session()
url = "https://" + domain + "/v1/prices"
headers = {'Authorization' : 'Bearer ' + access_token,
# 'X-Accept-Datetime-Format' : 'unix'
}
params = {'instruments' : instruments, 'accountId' : account_id}
req = requests.Request('GET', url, headers = headers, params = params)
pre = req.prepare()
resp = s.send(pre, stream = True, verify = False)
return resp
except Exception as e:
s.close()
print "Caught exception when connecting to stream\n" + str(e)
response = urllib2.urlopen("https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_USD")
data = json.load(response)
print data
抱歉,我编辑了代码并省略了错误消息。但是,我可以通过使用Oanda的python包装器https://github.com/oanda/oandapy来解决问题。
答案 0 :(得分:1)
该网址无效,我建议您检查最近是否更改了API,因为搜索结果显示其他人过去曾尝试使用该网址。尝试访问chrome中的url时,我会收到以下信息:
无法找到api-practice.oanda.com上的服务器,因为DNS查找失败。 DNS就是网络 将网站名称翻译为其Internet地址的服务。这个错误通常是由于没有造成的 连接到Internet或配置错误的网络。它也可能是由无响应的DNS服务器引起的 阻止谷歌浏览器访问网络的防火墙。
错误代码:DNS_PROBE_FINISHED_NXDOMAIN
另外,我会坚持使用请求库或urllib2。您问题底部的请求可以从以下位置重写:
response = urllib2.urlopen("https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_USD")
data = json.load(response)
print data
为:
r = requests.get("https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_USD")
data = r.json()
print data
编辑:更新了网址以匹配相关编辑。
https://api-practice.oanda.com/v1/prices?instruments=EUR_USD
到
&#34; https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_USD&#34;
答案 1 :(得分:0)
请从服务器的命令提示符处执行ipconfig / flushdns,您最有可能获得结果。