【问题标题】:Download a file From https using VB.net使用 VB.net 从 https 下载文件
【发布时间】:2010-07-21 16:24:39
【问题描述】:

谁能帮帮我?

我需要使用 vb.net 从 web 即 https:\www.xxx.com\ 下载文件并将其保存到系统的 C 盘。

下面是代码:

Dim URI As String = ftpHost & ftpFile
Dim oRequest As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(URI), HttpWebRequest)
oRequest.Credentials = New System.Net.NetworkCredential(userName, pwd)        
Using oResponse As System.Net.WebResponse = CType(oRequest.GetResponse, System.Net.WebResponse)
    Using responseStream As IO.Stream = oResponse.GetResponseStream
        Using fs As New IO.FileStream(localFile, FileMode.Create, FileAccess.Write)
            Dim buffer(2047) As Byte
            Dim read As Integer
            Do
            read = responseStream.Read(buffer, 0,buffer.Length)
                fs.Write(buffer, 0, read)
            Loop Until read = 0
            responseStream.Close()
            fs.Flush()
            fs.Close()
        End Using
        responseStream.Close()
    End Using
    oResponse.Close()
End Using

但这并没有读取任何内容。

提前致谢。

【问题讨论】:

  • 只是好奇,您的变量名为 ftpHost,但您使用的是 http 请求?
  • 是的,在我使用它从 FTP 站点下载之前,没有费心更改变量名称 :)

标签: .net vb.net


【解决方案1】:

我运行您的代码,从 https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js 下载了最新的 jQuery 库,一切正常。我使用了“name”/“pwd”的虚拟用户名/密码。我唯一能想到的是您的凭据无效。如果您更改代码以下载我上面提到的 jQuery 文件,它可以工作吗?如果是这样,我会看看您传递的凭据以及您如何在服务器端处理它们。

希望这会有所帮助。

---修改后的代码---

    Dim URI As String = "https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"
    Dim oRequest As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(URI), HttpWebRequest)
    oRequest.Credentials = New System.Net.NetworkCredential("name", "pwd")
    Using oResponse As System.Net.WebResponse = CType(oRequest.GetResponse, System.Net.WebResponse)
        Using responseStream As IO.Stream = oResponse.GetResponseStream
            Using fs As New IO.FileStream("c:\temp\jquery-1.4.2.js", FileMode.Create, FileAccess.Write)
                Dim buffer(2047) As Byte
                Dim read As Integer
                Do
                    read = responseStream.Read(buffer, 0, buffer.Length)
                    fs.Write(buffer, 0, read)
                Loop Until read = 0
                responseStream.Close()
                fs.Flush()
                fs.Close()
            End Using
            responseStream.Close()
        End Using
        oResponse.Close()
    End Using

【讨论】:

  • 我还注意到,如果我将 URL 更改为使用 jQuery 的 CDN (code.jquery.com/jquery-1.4.2.min.js),则在调用 GetResponse 时会出现异常。我认为 code.jquery.com 证书已过期 - 所以也许这也是一个问题。
【解决方案2】:

【讨论】:

  • 那没用,我不需要代理。请查看我一直在使用的代码。
【解决方案3】:

您的目标站点https://foo.com/bar.txt 是否提供foo.com 或其他站点的证书?

如果它没有 foo.com 的证书,这可能是问题的一部分。

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 2015-02-08
    • 1970-01-01
    • 2012-08-24
    • 2017-08-27
    • 2016-12-29
    • 1970-01-01
    • 2015-10-15
    • 2014-01-24
    相关资源
    最近更新 更多