python中Curl请求的问题

时间:2015-04-14 18:04:18

标签: python json curl

我试图从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来解决问题。

2 个答案:

答案 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,您最有可能获得结果。