2016-07-13 12 views
0

Ich habe eine in Python geschriebene Funktion, die Robinhood (ein Börsenmakler) API aufruft, um Kursdaten zu erhalten (Funktion "get_quote (self, symbol)" im folgenden Code snipshot). Und es funktioniert gut. Korrekte Marktdaten wurden zurückgegeben.https Anfrage - Python Code zu C++

import requests 
import urllib 

class Robinhood(object): 

# All known endpoints as of September 5th, 2015 
endpoints = { 

    "quotes": "https://api.robinhood.com/quotes/", 
    "user": "https://api.robinhood.com/user/", 
    "user/additional_info": "https://api.robinhood.com/user/additional_info/", 
    "user/basic_info": "https://api.robinhood.com/user/basic_info/", 
    "user/employment": "https://api.robinhood.com/user/employment/", 
    "user/investment_profile": "https://api.robinhood.com/user/investment_profile/", 
    "watchlists": "https://api.robinhood.com/watchlists/" 
    } 

def get_quote(self, symbol): 
    ''' Returns a qoute object for a given symbol including all data returned by Robinhood's API''' 
    data = { 'symbols' : symbol } 
    res = self.session.get(self.endpoints['quotes'], params=data) 
    if res.status_code == 200: 
     return res.json()['results'] 
    else: 
     raise Exception("Could not retrieve quote: " + res.text) 

Ich habe versucht, diese Logik in C++ mit Curl-Bibliothek zu implementieren. Aber es funktioniert nicht. Es gab keinen Kompilierungs- oder Laufzeitfehler, aber das Programm hat ein einzelnes unlesbares Zeichen anstelle des Marktpreises des Bestands zurückgegeben. Es sieht für mich so aus, als wäre meine URL nicht korrekt eingerichtet, aber ich konnte nicht herausfinden, wie ich sie beheben kann. Hat jemand eine Idee? Vielen Dank!

std::string RobinhoodAPI::GetQuote(std::string ticker) 
{ 
struct response resStr; 
init_string(&resStr); 
std::string url = "https://api.robinhood.com/quotes/symbols=AVP/"; 
curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); 
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resStr); 

resCode = curl_easy_perform(curl); 
std::cout << std::string(resStr.ptr); 

return std::string(resStr.ptr); 
} 
+0

können Sie ein ausführbares Beispiel veröffentlichen? –

+0

könnte ich. Aber in beiden Fällen benötigen Sie Ihren Robinhood-Benutzernamen und Ihr Passwort, um eine Verbindung zur API herzustellen. –

+0

@MK. Das unlesbare Symbol sieht wie Nummer Null mit Fragezeichen darin aus. –

Antwort