я написал простую C# функцию, чтобы получить историю торговли из MtGox со следующим API вызова:HttpWebRequest.GetResponse() продолжает получать таймаут
https://data.mtgox.com/api/1/BTCUSD/trades?since=<trade_id>
описываемых здесь: https://en.bitcoin.it/wiki/MtGox/API/HTTP/v1#Multi_currency_trades
вот функция:
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();
reader.Close();
reader.Dispose();
response.Close();
return json;
}
Я начинаю с tid = 0 (торговый идентификатор), чтобы получить данные (с самого начала). для каждого запроса я получаю ответ, содержащий 1000 торговых данных. я всегда отправляю торговый идентификатор из предыдущего ответа для следующего запроса. он отлично работает для ровно 4 запроса & ответов. но после того, что следующая строка бросает «System.Net.WebException», говоря, что «операция истекла»:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
вот факты:
- отлов исключения и retying сохраняет вызывая то же исключение
- по умолчанию HttpWebRequest .Timeout и .ReadWriteTimeout уже достаточно высоки (более минуты)
- изменения HttpWebRequest.KeepAlive лжи не решить что-нибудь либо
- , кажется, всегда работает в браузере, даже в то время как функция терпит неудачу
- он не имеет никаких проблем retrieveing ответа от https://www.google.com
- суммы успешных ответов перед исключениями меняются изо дня в день (но браузер всегда работает)
- начиная с торговли ид, что не удалось в последний раз вызывает исключение немедленно
- вызова этой функции из главного потока, а не все еще вызвал исключение
- работает его на другой машине не работал
- ру nning его с другого IP не работает
- увеличение Thread.Sleep Inbetween запросов не помогает
какие-либо идеи о том, что может быть не так?
Я просто попробовал то, что вы предложили. на этот раз он загрузил 5 ответов, так что это похоже на улучшение. но затем я продолжаю получать «Удаленный сервер возвратил ошибку: (504)« Время ожидания шлюза »(которое отличается от« Операция тайм-аута ») – symbiont
Я предполагаю, что это проблема на стороне сервера? – symbiont
безразлично. он по-прежнему работает в моем браузере (firefox). – symbiont