Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Overview
Network objects such like Network.DownloadFile or ImageList.LoadImage don't work with some host such like Microsoft Tech Community or Flickr.
Phenomenon
Following operations return nothing with the host which may have the security protocol type TLS12.
- Network.DownloadFile
- Network.GetWebPageContents
- ImageList.LoadImage
- Shapes.AddImage
- GraphicsWindow.DrawImage
Following code is a sample to reproduce this issue. This sample is from Small Basic Getting Started Guide: Appendix A. This program should show a picture from Flickr when mouse click.
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
pic = Flickr.GetRandomPicture("mountains, river")
GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480)
EndSub
But nothing happens.
Workaround
LDNetwork.DownloadFile in LitDev Extension can download the same files.
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
pic = Flickr.GetRandomPicture("mountains, river")
path = File.GetTemporaryFilePath()
size = LDNetwork.DownloadFile(path, pic)
GraphicsWindow.DrawResizedImage(path, 0, 0, 640, 480)
EndSub
Possible Cause
This issue may because of new security protocol TLS. Following PowerShell function work well with such hosts above.
function Get-WebPageContents($url) {
# Simulates Small Basic NetWork.GetWebPageContents()
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
$wc = New-Object System.Net.WebClient
$st = $wc.OpenRead($url)
$enc = [System.Text.Encoding]::GetEncoding('UTF-8')
$sr = New-Object System.IO.StreamReader($st, $enc)
$html = $sr.ReadToEnd()
$sr.Close()
$html
}
See Also
- [[articles: Microsoft Small Basic v1.2: Known Issues]]