megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 21, 2019, 02:10:53 PM |
|
Добрый день. Пытаюсь через АПИ blockchain.info закачать историю кошелька: string url = @"https://blockchain.info/rawaddr/385cR5DM96n1HvBDMzLHPYcw89fZAXULJP"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET"; request.Accept = "application/json"; request.UserAgent = "Mozilla/5.0 ....";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; WebResponse httpResponse = request.GetResponse(); StreamReader reader = new StreamReader(httpResponse.GetResponseStream());
history = JsonConvert.DeserializeObject<JsonWalletHistory>(reader.ReadToEnd()); Код на C#. И почему то на строке WebResponse httpResponse = request.GetResponse(); Вылетает с ошибкой: Additional information: Запрос был прерван: Не удалось создать защищенный канал SSL/TLS Подскажите, пожалуйста, что делаю не так?
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2335
Merit: 2384
|
|
March 21, 2019, 04:41:06 PM |
|
Подскажите, пожалуйста, что делаю не так?
Будьте проще: string url = @"https://blockchain.info/rawaddr/385cR5DM96n1HvBDMzLHPYcw89fZAXULJP"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (WebResponse httpResponse = request.GetResponse()) { using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream())) { history = JsonConvert.DeserializeObject<JsonWalletHistory>(reader.ReadToEnd()); } }
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 22, 2019, 05:09:30 AM Last edit: March 22, 2019, 05:28:43 AM by megabax |
|
Все равно та же самая ошибка на строке using (WebResponse httpResponse = request.GetResponse())
|
|
|
|
n00by
Member
Offline
Activity: 172
Merit: 11
|
|
March 22, 2019, 07:17:37 AM |
|
Все равно та же самая ошибка на строке using (WebResponse httpResponse = request.GetResponse()) Там по моему токен нужен для SSL. То есть твой request надо дополнить параметрами SSL
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2335
Merit: 2384
|
|
March 22, 2019, 09:31:01 AM |
|
Все равно та же самая ошибка на строке using (WebResponse httpResponse = request.GetResponse()) Странно как-то. У меня прямо сейчас вот этот код выводит в консоль ответ в формате JSON без всяких ошибок: static void Main(string[] args) { string url = @"https://blockchain.info/rawaddr/385cR5DM96n1HvBDMzLHPYcw89fZAXULJP"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (WebResponse httpResponse = request.GetResponse()) { using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream())) { Console.WriteLine(reader.ReadToEnd()); } } }
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 22, 2019, 10:37:47 AM |
|
Действительно странно. После того как перевел проект на NetFramework 4.7.1 и поднял Visual studio с 2015 до 2017 заработало. Хотя, непонятно, почему не ставится BlockchainAPI, выдавая сообщение: Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка Не удалось установить пакет «BlockchainAPI 4.0.0». Вы пытаетесь установить этот пакет в проект, требуемая версия платформы которого — «.NETFramework,Version=v4.7.1», но в пакете нет ссылок на сборки или файлов содержимого, совместимых с этой платформой. Дополнительную информацию можно получить у автора пакета. Кстати, а стоит ли вообще ставить BlockchainAPI, кто-нибудь работал с ним?
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
March 22, 2019, 10:38:06 AM |
|
Может протоколов задать больше?
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 22, 2019, 10:46:38 AM |
|
Еще вопрос в догонку. В этом JSON информация о дате и времени типа "time":1552580349, в какой формате? Как ее в нормальное время перевести? Может протоколов задать больше?
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; И так делал. И точно также не работало. Только после установки VS 2017 и NetFramework 4.7.1 заработало. Но никак не понимаю, какая тут связь??
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
March 22, 2019, 11:04:14 AM |
|
Еще вопрос в догонку. В этом JSON информация о дате и времени типа "time":1552580349, в какой формате? Как ее в нормальное время перевести? Может протоколов задать больше?
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; И так делал. И точно также не работало. Только после установки VS 2017 и NetFramework 4.7.1 заработало. Но никак не понимаю, какая тут связь?? Это в Юниксовом http://www.onlineconversion.com/unix_time.htmМного вариантов обработать, например так https://stackoverflow.com/questions/249760/how-can-i-convert-a-unix-timestamp-to-datetime-and-vice-versaПо поводу протоколов, вроде как старые версии студии (фреймворков?) не поддерживают новые протоколы, но могу ошибиться.
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 22, 2019, 12:12:42 PM |
|
По поводу протоколов, вроде как старые версии студии (фреймворков?) не поддерживают новые протоколы, но могу ошибиться. После установки новый фрейморков новые протоколы не добавились, как было максимум SecurityProtocolType.Tls12, так и осталось Кстати, не подскажите как решить внезапно всплывшую проблему? В Json-е есть такое: "out":[ { "spent":false, ... ... Но я не могу объявить структуру типа public List<МойКласс> out; - ибо ключевое слово. То есть получается не будет работать конструкция history = JsonConvert.DeserializeObject<JsonWalletHistory>(reader.ReadToEnd()); Как тут быть? В самом тексте Json-перед распарсиванием заменить out на что-то иное или есть другое, более красивое решение?
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
March 22, 2019, 01:51:28 PM Last edit: March 22, 2019, 02:02:28 PM by ligor |
|
По поводу протоколов, вроде как старые версии студии (фреймворков?) не поддерживают новые протоколы, но могу ошибиться. После установки новый фрейморков новые протоколы не добавились, как было максимум SecurityProtocolType.Tls12, так и осталось Кстати, не подскажите как решить внезапно всплывшую проблему? В Json-е есть такое: "out":[ { "spent":false, ... ... Но я не могу объявить структуру типа public List<МойКласс> out; - ибо ключевое слово. То есть получается не будет работать конструкция history = JsonConvert.DeserializeObject<JsonWalletHistory>(reader.ReadToEnd()); Как тут быть? В самом тексте Json-перед распарсиванием заменить out на что-то иное или есть другое, более красивое решение? используй [JsonProperty("out")] т.е. вроде // rename property [JsonProperty("out")] public IList myout{ get; set; } P.S. А разве их АПИ https://www.blockchain.com/ru/api не облегчает использование? Вот их библиотека https://github.com/blockchain/api-v1-client-csharp
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 22, 2019, 02:46:01 PM |
|
используй [JsonProperty("out")] спасибо. Вот она что-то не ставится. говорит: Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка Не удалось установить пакет «BlockchainAPI 4.0.0». Вы пытаетесь установить этот пакет в проект, требуемая версия платформы которого — «.NETFramework,Version=v4.7.1», но в пакете нет ссылок на сборки или файлов содержимого, совместимых с этой платформой. Дополнительную информацию можно получить у автора пакета.
Кстати, еще такой интересный момент, в Json есть поле "result":5005, я так понимаю что это результат транзакции. Но только вот как-то странно, он сдвинут на 1 транзакцию назад. То есть, вот история по кошельку 385cR5DM96n1HvBDMzLHPYcw89fZAXULJP 568252 2019-03-22 10:16:44 +0.00005005 BTC 128,004.91059223 BTC $511,052,121 @ $3,992.44 568097 2019-03-21 11:02:02 +0.00000546 BTC 128,004.91054218 BTC $519,012,907 @ $4,054.63 567044 2019-03-14 19:34:50 +0.00001 BTC 128,004.91053672 BTC $496,525,109 @ $3,878.95 Первая транзакция (от 22 марта) "result":0 и только следующая за ней с датой от 21 марта имеет "result":5005? Непонятно, когда фактически поступили 0.00005005 BTC на кошелек, 22 марта, или все таки 21-ого?
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
March 22, 2019, 04:28:10 PM |
|
Вот она что-то не ставится. говорит: Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка Не удалось установить пакет «BlockchainAPI 4.0.0». Вы пытаетесь установить этот пакет в проект, требуемая версия платформы которого — «.NETFramework,Version=v4.7.1», но в пакете нет ссылок на сборки или файлов содержимого, совместимых с этой платформой. Дополнительную информацию можно получить у автора пакета.
Кстати, еще такой интересный момент, в Json есть поле Там на Коре 1 идет, но можно изменить на фреймворк The library requires .NET Core 1.1. It is possible to use this library with the .NET Framework by editing Info.Blockchain.Api.csproj
and changing
<TargetFramework>netcoreapp1.1</TargetFramework>
to your project's .NET version, e.g.
<TargetFramework>net46</TargetFramework> По поводу result:5005 не скажу, может тут вообще не о сумме речь идет? 22 марта все таки позднее 21
|
|
|
|
megabax (OP)
Newbie
Offline
Activity: 19
Merit: 1
|
|
March 25, 2019, 05:42:43 AM |
|
Там на Коре 1 идет, но можно изменить на фреймворк То есть ее не через нугет пакеты надо ставить, а скачать проект и прицепить его к моему решению, а там указать фреймворк? По поводу result:5005 не скажу, может тут вообще не о сумме речь идет? 22 марта все таки позднее 21 Я сморю сюда: https://bitinfocharts.com/ru/bitcoin/address/385cR5DM96n1HvBDMzLHPYcw89fZAXULJPтут история отсортированая в обратном порядке (сначала новые потом старые даты), транзакции по АПИ в таком же порядке, и что в result совпадает с суммой, но сдвинуто на 1 в сторону старых дат. Но фактический эта сумма фигурирует в выходах за ту дату, которая стоит в таблице остатков из https://bitinfocharts.com/ru/bitcoin/address/385cR5DM96n1HvBDMzLHPYcw89fZAXULJP "out":[ { "spent":false, "tx_index":427293982, "type":0, "addr":"1AVGjEN5wuHZacY2NCk4KxDstoXZDMh2A", "value":1346, "n":0, "script":"76a91401cb57ded602c21d050856ef3f9f8bbe006462f488ac" }, { "spent":false, "tx_index":427293982, "type":0, "addr":"385cR5DM96n1HvBDMzLHPYcw89fZAXULJP", "value":5005, "n":1, "script":"a9144616b2c00cfc401861b98e86ccce47a683ed63da87" } ], Вот не пойму почему так. Что вообще обозначает поле "time":1553238932, в транзакции? Момент когда пользователь сформировал транзакцию, момент когда она в блок была включена ли когда была подтверждена?
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
March 25, 2019, 12:35:49 PM |
|
Что вообще обозначает поле "time":1553238932, в транзакции? Момент когда пользователь сформировал транзакцию, момент когда она в блок была включена ли когда была подтверждена?
В транзакции его нет. Это timestamp блока.
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
March 25, 2019, 12:53:38 PM |
|
То есть ее не через нугет пакеты надо ставить, а скачать проект и прицепить его к моему решению, а там указать фреймворк? .... Вот не пойму почему так. Что вообще обозначает поле "time":1553238932, в транзакции? Момент когда пользователь сформировал транзакцию, момент когда она в блок была включена ли когда была подтверждена?
Посмотрел - там у них свежая версия на Стандарте, значит можно и в 4.6.1 и выше использовать. Создаешь проект и через Нугет ставишь, примеры подробные https://github.com/blockchain/api-v1-client-csharp/blob/master/docs/blockexplorer.md . Попробовал - работает. И не нужно с парсингом возиться.
|
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2335
Merit: 2384
|
|
March 26, 2019, 09:33:29 AM |
|
В транзакции его нет. Это timestamp блока. То есть вообще непонятно, когда транзакция сформировалась? И поэтому момент поступления средств считать моментом формирования блока, ибо тогда ее все увидели? Да. Это такая фича криптовалют. Пока транзакция не в блоке - считайте, что её нет. blockchain.info не поддерживает адреса формата Bech32.
|
|
|
|
|