كيف يمكنني تغيير المهلة الزمنية ل WebClient.uploaddata ()؟

StackOverflow https://stackoverflow.com/questions/1237966

سؤال

انا استخدم WebClient.UploadData() للقيام بنشر على خادم جافا. كيف يمكنني تمديد المهلة الزمنية؟ (أوقات في كل مرة أحاول القيام بها بعض التصحيح)

هل كانت مفيدة؟

المحلول

لا تحتوي WebClient على خاصية مهلة، ومع ذلك، فمن الممكن أن ترث من Webclient لإعطاء الوصول إلى مهلة على WebRequest الداخلية المستخدمة:

 public class WebClientEx : WebClient
 {
     public int Timeout {get; set;}

     protected override WebRequest GetWebRequest(Uri address)
     {
        var request = base.GetWebRequest(address);
        request.Timeout = Timeout;
        return request;
     }
 }

الاستعمال:

 var myClient = new WebClientEx();
 myClient.Timeout = 900000 // Daft timeout period
 myClient.UploadData(myUri, myData);

نصائح أخرى

لذلك لأولئك الذين كود في VB ...

Public Class WebClientExtended
    Inherits WebClient
    Public Property Timeout() As Integer
        Get
            Return m_Timeout
        End Get
        Set(value As Integer)
            m_Timeout = value
        End Set
    End Property
    Private m_Timeout As Integer

    Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
        Dim request = MyBase.GetWebRequest(address)
        request.Timeout = Timeout
        Return request
    End Function
End Class

Function UploadFile(ByVal URL As String, ByVal FilePath As String, ByVal FileName As String)

    'Call API to Upload File
    Dim myWebClient As New WebClientExtended
    myWebClient.Timeout = 10 * 60 * 1000
    Dim responseArray As Byte()
    Dim responseString As String = ""

    Try
        responseArray = myWebClient.UploadFile(URL, FilePath + "/" + FileName)
        responseString = System.Text.Encoding.ASCII.GetString(responseArray)
    Catch ex As Exception
        responseString = "Error: " + ex.Message
    End Try

    Return responseString

End Function
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top