Vb.net 从internet获取更新的BTC值

Vb.net 从internet获取更新的BTC值,vb.net,Vb.net,我试图在VB.Net中从互联网上获取更新后的BTC值 我在一个普通的私人潜艇上使用这个方法 Dim btcvalue As String = "https://blockchain.info/tobtc?currency=USD&value=1" Try Dim reply As String = client.DownloadString(btcvalue) TextBox1.Text = reply

我试图在VB.Net中从互联网上获取更新后的BTC值

我在一个普通的私人潜艇上使用这个方法

Dim btcvalue As String = "https://blockchain.info/tobtc?currency=USD&value=1"
    Try
                Dim reply As String = client.DownloadString(btcvalue)
                TextBox1.Text = reply
          Catch
    End Try
结果是它一无所获。我曾尝试使用internet explorer浏览blockchain.info,但实际上它没有连接。网站似乎正在阻止默认情况下由vb.net使用的浏览器。 我可以从另一个站点获得相同的值,但区块链更容易,因为我直接从url中提取字符串,而无需添加更多代码。我用来从原始的pastebin页面提取字符串的代码起作用。Internet explorer可以很好地连接到pastebin站点


例如,如何从google获得精确的字符串(btc值)?

在调试时,您很可能希望添加一些适当的异常处理在生产代码中使用空的
捕获
块,如果绝对确定要忽略错误(在任何情况下都可以记录错误),并且始终按显式类型处理最有可能的异常

如果在代码中添加一些异常处理:

Dim btcvalue As String = "https://blockchain.info/tobtc?currency=USD&value=1"
Try
    Dim reply As String = client.DownloadString(btcvalue)
    TextBox1.Text = reply

Catch webEx As WebException
    MessageBox.Show(webEx.Message)
    Exit Sub    
End Try
您应该会看到错误消息:

“请求被中止:无法创建SSL/TLS安全通道。”


当您试图访问
Https
url时,您很可能希望使用
ServicePointManager.SecurityProtocol
属性指定安全策略:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Using client As New WebClient

    Dim btcvalue As String = "https://blockchain.info/tobtc?currency=USD&value=1"
    Try
        Dim reply As String = client.DownloadString(btcvalue)
        TextBox1.Text = reply

    Catch webEx As WebException
        MessageBox.Show(webEx.Message)
        Exit Sub    
    End Try

End Using
通常需要指定
用户代理
。然而,对于这个请求,您似乎不必这样做,但如果您这样做,它似乎必须是一个代理,它引用比IE更现代的浏览器。例如:

client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " &
                                 "AppleWebKit/537.36 (KHTML, like Gecko) " &
                                 "Chrome/42.0.2311.135 Safari/537.36 Edge/12.246")

评论不用于扩展讨论;此对话已结束。感谢您的帮助。问题不应该出在https协议上,因为如果我将“pastebin.com/raw/uUepG1iH”作为地址,它就会得到字符串。我添加了client.Headers.Add。仍然有问题,添加catch代码我得到错误:连接关闭:发送操作期间出现意外错误我上面发布的代码对我有效。我从服务器得到“0.00010391”作为答复。注释掉
ServicePointManager
行将导致上述安全错误消息。据我所知,'pastebin.com/raw/uUepG1iH'不使用
Https
,因此可以在不改变协议类型的情况下工作。不确定如何在不指定uri方案的情况下让它与“pastebin.com/raw/uUepG1iH”一起工作。您应该发布您正在使用的导致当前错误的确切代码。ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12---Tls12被标记为错误,而不是Tls。您使用的是什么版本的Windows操作系统和什么版本的.NET framework?是.NET 2.0引起了您的悲痛。服务器要求至少TLS1.1,但您需要至少以.NET 4.5为目标,以便在
SecurityProtocolType Enum
中提供该选项。我似乎记得早期的.NET版本有一个变通方法(包括更改注册表值等),但记不起细节。甚至可能不适用于.NET2.0,按照今天的标准,它已经过时了。需要谷歌搜索。