Ich habe eine einfache Funktion geschrieben, um Trades von mtgox mit dem folgenden HTTP-API-Aufruf abzurufen:
https://data.mtgox.com/api/1/BTCUSD/trades?since
hier dokumentiert: https://en.bitcoin.it/wiki/MtGox/API/HTTP/v1#Multi_currency_trades
hier die funktion:
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;
}
Ich fange bei tid=0 an, um die Daten von Anfang an zu erhalten. es funktioniert gut für 5 Anfragen und Antworten. aber dann wirft die folgende Zeile eine "System.Net.WebException" und sagt, dass "The operation has timed out":
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Diese Ausnahme wird immer wieder ausgelöst, auch wenn ich sie fange und es erneut versuche. es ist immer genau bei 5 Anfragen.
Während es seit ein paar Minuten fehlschlägt, versuche ich die 6. Anfrage im Browser und es funktioniert einwandfrei, während die Funktion weiterhin fehlschlägt.
Das Seltsame ist, dass es jedes Mal, wenn ich die Anwendung starte, für 5 Anfragen funktioniert. derzeit beginne ich immer bei trade id 0 (tid=0).
Ich habe das Sleep() zwischen Anfragen auf 2 Minuten erhöht, aber es verhält sich immer noch gleich.
Wenn ich die URL in https://www.google.com ändere , kommt es nicht zu einer Zeitüberschreitung.
Irgendwelche Ideen, was falsch sein könnte?
MtGox verwendet CloudFlare für den DDOS-Schutz. Es ist möglich, dass Ihre IP blockiert wird.
Eröffnen Sie ein Ticket bei MtGox und teilen Sie ihnen Ihre IP mit ... sie werden sie wahrscheinlich auf die Whitelist setzen.
Symbiont
Macher7
Symbiont
Macher7