Проблемы VBA с запросом к веб-службе (запрос был прерван: соединение было неожиданно закрыто)

avatar
Connor Lack
9 августа 2021 в 03:14
40
0
0

Я использую программу конвертации валюты Азиза Салеха с 2010 года. Код не показывает никаких ошибок, однако при нажатии кнопки конвертировать ошибка

"Запрос был прерван: соединение было неожиданно закрыто"

происходит. Я обновил URL для XE и не знаю, что делать дальше.

 Private Sub doCalculate()
        ' Need the scraping
        Dim Str As System.IO.Stream
        Dim srRead As System.IO.StreamReader
        Dim strAmount As String

        strAmount = currencyAmount.Text


        ' Get values from the textboxes
        Dim strFrom() As String = Split(currencyFrom.Text, " - ")
        Dim strTo() As String = Split(currencyTo.Text, " - ")

        ' Web fetching variables
        Dim req As System.Net.WebRequest = System.Net.WebRequest.Create("https://www.xe.com/currencyconverter/" + strAmount + "&From=" + strFrom(1) + "&To=" + strTo(1) + "YER&image.x=47&image.y=19&image=Submit")
        Dim resp As System.Net.WebResponse = req.GetResponse

        Str = resp.GetResponseStream
        srRead = New System.IO.StreamReader(Str)


        ' Match the response
        Try
            Dim myMatches As MatchCollection
            Dim myRegExp As New Regex("([0-9]+\.[0-9]+ " + strTo(1) + ")")

            myMatches = myRegExp.Matches(srRead.ReadToEnd)

            ' Search for all the words in the string
            Dim sucessfulMatch As Match
            For Each sucessfulMatch In myMatches
                mainText.Text = sucessfulMatch.Value
            Next
        Catch ex As Exception
            mainText.Text = "Unable to connect to XE"
        Finally
            ' Close the streams
            srRead.Close()
            Str.Close()
        End Try
        mainText.Text = strAmount + " " + strFrom(0) + " Converts To: "
    End Sub

Private Sub convertButton_Click(sender As Object, e As EventArgs) Handles convertButton.Click

    ' Check if the currency is a number
    If Not IsNumeric(currencyAmount.Text) Then
        MsgBox("Please enter a valid amount!", MsgBoxStyle.Information, "Invalid Input")
        currencyAmount.Focus()
        Return
    End If

    doCalculate()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    currencyFrom.SelectedIndex = 0
    currencyTo.SelectedIndex = 1
End Sub
End Class

Выделенная текстовая ошибка

"Тусклый соотв. As System.Net.WebResponse = req.GetResponse".

Не похоже, что это действительно сложное решение, однако я новичок в программировании и чувствую себя далеко не в своей лиге, поэтому, насколько мне известно, это может быть невозможно.

Источник

Ответы (0)