Escribí una función simple para recuperar transacciones de mtgox con la siguiente llamada a la API HTTP:
https://data.mtgox.com/api/1/BTCUSD/trades?since
documentado aquí: https://en.bitcoin.it/wiki/MtGox/API/HTTP/v1#Multi_currency_trades
aquí está la función:
string GetTradesOnline(Int64 tid)
{
Thread.Sleep(30000);
// communicate
string url = "https://data.mtgox.com/api/1/BTCUSD/trades?since=" + tid.ToString();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string json = reader.ReadToEnd();
return json;
}
estoy comenzando en tid=0 para obtener los datos desde el principio. funciona bien para 5 solicitudes y respuestas. pero luego la siguiente línea arroja una "System.Net.WebException", que dice que "La operación se agotó":
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
esta excepción se sigue lanzando incluso si la atrapo y vuelvo a intentarlo. siempre es exactamente en 5 solicitudes.
aunque ha estado fallando durante un par de minutos, intento la sexta solicitud en el navegador y funciona bien mientras la función continúa fallando.
lo extraño es que funciona para 5 solicitudes cada vez que inicio la aplicación. Actualmente, siempre empiezo en el ID comercial 0 (tid=0).
Aumenté Sleep() entre solicitudes a 2 minutos, pero aún se comporta igual.
si cambio la URL a https://www.google.com , no se agota el tiempo de espera.
¿Alguna idea de lo que podría estar mal?
MtGox usa CloudFlare para la protección DDOS. Es posible que tu IP esté siendo bloqueada.
Abra un ticket con MtGox y dígales su IP... es probable que lo incluyan en la lista blanca.
simbionte
fabricante de cosas7
simbionte
fabricante de cosas7