Получение исходных данных с помощью GET-запроса

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Night_Fantom
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 11.12.2011 (Вс) 18:53

Получение исходных данных с помощью GET-запроса

Сообщение Night_Fantom » 11.12.2011 (Вс) 19:51

Доброго времени суток! =) Помогите, пожалуйста решить такую задачу:

С языком Visual Basic я почти не знаком. Ситуация такая: Есть программа, входными данными которой являются котировки акций (Среда разработки Visual Basic 2010 Express, тип программы Windows Form Application). Ввод котировок в программу можно организовать с помощью ручного способа, но это является достаточно долгим процессом (особенно если они вводятся за несколько лет). В результате поиска я нашёл онлайн сервис который предоставляет котировки для скачивания в виде *.txt или *.csv файлов, что почти решило задачу. Но для получения текущих котировок опять же надо заходить на этот сервис и в дальнейшем вбивать недостающие котировки в программу вручную, или получать новый *.txt или *.csv файл. Ещё немного поисков, и я нашёл ресурс в котором описан GET-запрос к этому сервису написанный на языке Python. Текст привожу ниже:

Код: Выделить всё
def quotes(df, mf, yf, diesel, mt, yt, simb, period):     '(Название функции и входные параметры)
f = urllib.urlopen('http://195.128.78.52/GAZP_080201_100208.txt?d=d&market=1&em=' + str(simb) + '&df=' + str(df) + '&mf=' + str(mf) + '&yf=' + str(yf) + '&diesel=' + str(diesel) + '&mt=' + str(mt) + '&yt=' + str(yt) +'&p=' + str(period) + '&f=GAZP_080201_100208&e=.txt&cn=GAZP&dtf=4&tmf=4&MSOR=0&sep=1&sep2=1&datf=5&at=1')     '(Сам запрос)
quot = f.read()     '(Получение запрошенных данных)
f.close()     '(Если правильно понимаю - закрытие соединения)
return string.split(quot, '\\n')[1:-1]     '(Возвращаемое значение - должно быть многомерным массивом с 8-ю столбцами и  n-ным количеством строк или текстовый файл с n-ным количеством строк)


Привожу источник: http://forexaw.com/TRADERs/Articles/Art ... 0%BA%D0%B8

Прошу помочь с написанием данной функции, которая будет выполнять GET-запрос и возвращать полученные данные при некотором событии, например Button1_Click. Сильно не ругайте, надеюсь на Вашу поддержку.

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Получение исходных данных с помощью GET-запроса

Сообщение Admiralisimys » 11.12.2011 (Вс) 23:50

Код: Выделить всё
Imports System
Imports System.IO
Imports System.Net

Class GetRespondToSite
    <STAThread()> Shared Sub Main()
        'http://forexaw.com/TRADERs/Articles/Articles_on_market_analysis/Articles_on_Technical_Analysis/84389_Как_получить_котировки
        'Следующий код получает и построчно выводит дневные котировки акций Газпрома за январь 2010 года (так как месяца на finam.ru нумеруются с нуля, в качестве номера месяца указываем 0):
        quotes(1, 0, 2010, 30, 0, 2010, 16842, 8)
    End Sub

    Shared Sub quotes(ByVal df As String, ByVal mf As String, ByVal yf As String, _
                       ByVal diesel As String, ByVal mt As String, ByVal yt As String, _
                       ByVal simb As String, ByVal period As String) '(Название функции и входные параметры)

        Dim webreq As WebRequest
        Dim webres As WebResponse

        Dim strUri As String = _
"http://195.128.78.52/GAZP_080201_100208.txt?d=d&market=1&em=" & _
simb & "&df=" & "&mf=" & mf & "&yf=" & yf & "&diesel=" & diesel & _
"&mt=" & mt & "&yt=" & yt & "&p=" & period & _
"&f=GAZP_080201_100208&e=.txt&cn=GAZP&dtf=4&tmf=4&MSOR=0&sep=1&sep2=1&datf=5&at=1" '(Сам запрос)
        Try
            webreq = WebRequest.Create(strUri)
            webres = webreq.GetResponse()
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Return
        End Try

        Dim strm As Stream = webres.GetResponseStream()
        Dim sr As New StreamReader(strm)
        Dim strLine As String

        strLine = sr.ReadLine()
        While Not strLine Is Nothing
            Console.WriteLine(strLine)
            strLine = sr.ReadLine()
        End While

        strm.Close()
    End Sub
End Class

После запроса прога вернула
<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
12/01/10,00:00,194.10000,195.80000,190.55000,191.80000,43441242
13/01/10,00:00,189.80000,191.86000,188.30000,189.30000,52375480


Нужно ещё отпарсить каждую строку по запятым и вызвать код в удобном событии.

Night_Fantom
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 11.12.2011 (Вс) 18:53

Re: Получение исходных данных с помощью GET-запроса

Сообщение Night_Fantom » 12.12.2011 (Пн) 20:48

Спасибо!

Организовал запись в файл. Надеюсь всё правильно сделал.

Код: Выделить всё
        Dim streamWriter As New StreamWriter("MyFile.txt")

        strLine = sr.ReadLine()
        While Not strLine Is Nothing
            StreamWriter.WriteLine(strLine)
            strLine = sr.ReadLine()
        End While

        streamWriter.Flush()
        streamWriter.Close()


Ещё раз огромное спасибо!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList