【问题标题】:How to post a custom header with WebClient.UploadFileAsync in VB.Net如何在 VB.Net 中使用 WebClient.UploadFileAsync 发布自定义标头
【发布时间】:2015-03-04 09:44:13
【问题描述】:

我的代码中有一个文件上传脚本,它需要在上传时发布身份验证密钥标头。但是,它似乎不像我预期的那样工作。到目前为止,这是我的代码:

Private Sub uploadFile()

    Dim address As String = "http://localhost/stripe/upload.php"

    Dim client As WebClient = New WebClient()
    Dim uri As Uri = New Uri(address)

    AddHandler client.UploadFileCompleted, AddressOf UploadFileCompleted
    AddHandler client.UploadProgressChanged, AddressOf UploadProgressCallback

    client.Headers.Set("authKey", login.authKey)
    client.UploadFileAsync(uri, "POST", uploadFileName)

End Sub

Private Sub UploadProgressCallback(ByVal sender As Object, ByVal e As UploadProgressChangedEventArgs)
    ProgressBar1.Value = e.ProgressPercentage
    Label3.Text = String.Format("{0} / {1} kB", Math.Round(e.BytesSent / 1024), Math.Round(e.TotalBytesToSend / 1024))
    Label2.Text = String.Format("{0}%", e.ProgressPercentage)
    Application.DoEvents()
End Sub

Private Sub UploadFileCompleted(ByVal sender As Object, ByVal e As UploadFileCompletedEventArgs)
    Dim response As String = System.Text.Encoding.ASCII.GetString(e.Result)
    Console.WriteLine(response)
End Sub

当我运行这段代码时:什么都没有发生。输出控制台或任何内容中没有换行符。就像代码从未到达UploadFileCompleted Sub。它似乎也没有到达UploadProgressCallback,因为进度条和相关标签永远不会更新。

当我尝试注释掉 client.Headers.Set("authKey", login.authKey) 行时:文件似乎已上传,但完成后:我收到了预期的 403 Forbidden 消息,因为我没有设置 authKey 标头。

我在这里做错了什么?

【问题讨论】:

    标签: vb.net asynchronous file-upload webclient


    【解决方案1】:

    我发现了我的问题。问题是由login.authKey 无法访问它所调用的线程引起的。由于程序是多线程的:我必须确保线程可以访问它。当我使其可访问时:该功能按预期工作。

    希望这对我身后的其他人有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多