Использовать тайм-аут запроса (Net.WebClient) - PullRequest
0 голосов
/ 12 февраля 2019

Можете ли вы установить тайм-аут для запроса, используя

Net.WebClient()

Я знаю, что это возможно с помощью WebRequest, однако я бы хотел использовать WebClient.

РЕДАКТИРОВАТЬ: я создал новыйКласс с именем WbClnt, содержащий следующий код:

Imports System.Net
Public Class WbClnt
    Inherits WebClient
    Protected Overrides Function GetWebRequest(ByVal uri As Uri) As WebRequest
        Dim w As WebRequest = MyBase.GetWebRequest(uri)
        w.Timeout = 5000
        Return w
    End Function
End Class

Однако я не могу вызвать эту функцию из своей основной формы, используя WbClnt.GetWebRequest, возможно, потому что она защищена.

1 Ответ

0 голосов
/ 12 февраля 2019

Из всего приведенного выше комментария приведена простая реализация того, что я предлагал сделать.

Imports System.Net

Public Class MyPatientlyWebClient
    Inherits WebClient

#Region "Variables"
    Private ReadOnly _timeOut As Integer = 100000
#End Region

#Region "Properties"

    ''' <summary>
    ''' Determine's how to long to wait for request.
    ''' </summary>
    ''' <returns></returns>
    Public ReadOnly Property HowLongToWait
        Get
            Return _timeOut
        End Get
    End Property
#End Region

#Region "Constructors"
    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(ByVal timeOut As Integer)
        MyBase.New()
        If timeOut <= 0 Then timeOut = 100000
        _timeOut = timeOut
    End Sub

#End Region

#Region "Overrides"

    Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
        Dim w As System.Net.WebRequest = MyBase.GetWebRequest(address)
        w.Timeout = HowLongToWait
        Return w
    End Function

#End Region

End Class

ДЛЯ ИСПОЛЬЗОВАНИЯ

Dim myPaWebClient As New MyPatientlyWebClient(120000)
Dim str As String = myPaWebClient.DownloadString("https://www.google.com")

Выможете установить свойство, если хотите;надо поменять ReadOnly, я просто что-то быстро взбил для тебя.

...