Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Как получить график с сайта BetFair.


Автор: vladd 30.8.2015, 10:26
Привет.
Имею такой код
Код

Private Sub GetGraph()
                Dim MyWebClient As New System.Net.WebClient
                Dim ImageInBytes() As Byte = MyWebClient.DownloadData(" https://www.betfair.com/exchange/horse-racing/marketactivity?id=1.120336369&selectionId=9529153")
                Dim ImageStream As New IO.MemoryStream(ImageInBytes)
                PictureBox1.Image = New System.Drawing.Bitmap(ImageStream)
        End Sub


 на строке
PictureBox1.Image = New System.Drawing.Bitmap(ImageStream)
выдаёт такую ошибку
Код

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Дополнительные сведения: Недопустимый параметр.

Как это дело исправить нигде не нашёл. Как правильно загрузить график в PictureBox? 

Автор: diadiavova 30.8.2015, 10:49
Цитата(vladd @  30.8.2015,  10:26 Найти цитируемый пост)
Как правильно загрузить график в PictureBox? 

Код

PictureBox1.Load("https://www.betfair.com/exchange/horse-racing/marketactivity?id=1.120336369&selectionId=9529153")

Автор: vladd 30.8.2015, 10:57
Теперь ошибка
Код

Необработанное исключение типа "System.ArgumentException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимый параметр.


Автор: diadiavova 30.8.2015, 11:15
Вот пример с загрузкой картинки с винграда. Насчет твоей картинки проверить работу не могу, поскольку у меня этот сайт заблокирован. Но в том, что этот способ работает, ты можешь убедиться и так.

Автор: vladd 30.8.2015, 12:04
У меня Вашу картинку также загружает, а на моём графике выдаёт ту же ошибку.
 Что делать то?

Автор: diadiavova 30.8.2015, 12:16
Цитата(vladd @  30.8.2015,  12:04 Найти цитируемый пост)
а на моём графике выдаёт ту же ошибку

А если адрес в адресную строку браузера загрузить, картинка появляется? Я к тому, что вообще точно известно, что по этому адресу именно картинка расположена?

Автор: vladd 30.8.2015, 12:39
Вот url 
https://www.betfair.com/exchange/horse-racing/marketactivity?id=1.120336369&selectionId=8486071
График загружается. 

user posted image

Автор: diadiavova 30.8.2015, 12:47
vladd, ну тогда попробуй тем способом, с которого начал. Только картинку из стрима можно получить не через конструктор, а через статический метод
Image.FromStream

Автор: vladd 30.8.2015, 13:17
Попробовал вот через такой код
Код

Private Sub GetGraph()
        Dim ImageInBytes() As Byte
        Dim MyWebClient As New System.Net.WebClient
        Dim mStr As String = "https://www.betfair.com/exchange/horse-racing/marketactivity?id=1.120336369&selectionId=8486071"
        ImageInBytes = MyWebClient.DownloadData(mStr)
        Using stream As New IO.MemoryStream(ImageInBytes)
            PictureBox1.Image = Image.FromStream(stream)
        End Using
    End Sub

Те же грабли. Та же ошибка.

Добавлено через 3 минуты и 34 секунды
Чувствую что надо черех многопотоковость делать. Так как объём графика большой.
 А как делать не знаю. Никогда этого не делал.

Автор: diadiavova 30.8.2015, 13:27
Цитата(vladd @  30.8.2015,  13:17 Найти цитируемый пост)
Те же грабли. Та же ошибка.

Мне сложно что-то сказать, поскольку нет доступа к этому сайту и проверить не могу. Единственное, что могу еще посоветовать - используй DownloadFile и посмотри, что загрузилось. Вполне возможно, что или какие-то фокусы с редиректами или еще что.
Цитата(vladd @  30.8.2015,  13:17 Найти цитируемый пост)
Чувствую что надо черех многопотоковость делать.

А это тут при чем?

Автор: vladd 30.8.2015, 13:52
Многопотоковость, чтоб не занимать весь компьютер.
Спс большое за желание помочь. 

Автор: sadisasha 31.8.2015, 09:31
А с чего вы решили что по ссылке лежит именно картинка, у меня тоже нет доступа к сайту, но рискну предположить что у них есть api и лучше пользовать его, или же парсить html, который прийдет по этой ссылке, на наличие картинки, или же может там уже есть json

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-poluchit-grafik-s-sayta-BetFair-id55e2b048ae2015c4708b4567#findElement_E7045_55e3f4b7ae2015e27b1cbe2c_0

Автор: woodoomod 31.8.2015, 12:34
Модератор: Сообщение скрыто.

Автор: Rokforus 3.9.2015, 14:25
Я тоже склоняюсь к мысли, что по указанному URL находится веб-страница, а не ресурс в виде картинки.
Если в коде вместе указанного URL задать, например, "https://google.com" и будет та же самая ошибка - то это подтвердит моё (и http://ru.vingrad.com/Aleksandr-uid516d12fa6ccc197d29000ee9) предположение.
В этом случае нужно будет "вытащить" непосредственно картинку (или линку непосредственно на неё) из полученной по URL'у страницы и уже тогда отдавать её в PictureBox1.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-poluchit-grafik-s-sayta-BetFair-id55e2b048ae2015c4708b4567#findElement_E7045_55e82e43ae2015033c1cbdf6_0

Автор: Курсант 4.9.2015, 11:01
Кстати, помимо того, что там может быть и не картинка, а не авторизировался ли автор на ресурсе? Браузер много всего интересного делает. Например, кукисы отсылает по запросу сервера. У браузера могли отложиться кукисы в процессе авторизации, а у программы, которую Вы пишете, таких кукисов нет. Возможно, именно поэтому у остальных форумчан страница не грузится.

Автор: duongquan12 6.8.2020, 10:10
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)