如果我理解正确的话,例子中FSharp.Core WebExtensions Module
使用的过时类(如WebRequest
和WebClient
)应该使用HttpClient
。https
://fsharp.github.io/fsharp-core-docs/reference/fsharp-control-webextensions.html
如果是这种情况,如何要求更新示例。我在页面上没有看到任何反馈选项。
如果我理解正确的话,例子中FSharp.Core WebExtensions Module
使用的过时类(如WebRequest
和WebClient
)应该使用HttpClient
。https
://fsharp.github.io/fsharp-core-docs/reference/fsharp-control-webextensions.html
如果是这种情况,如何要求更新示例。我在页面上没有看到任何反馈选项。
此示例取自 dotnet/fsharp 文档,由于以下原因,它已过时 - “此构造已弃用。WebRequest、HttpWebRequest、ServicePoint 和 WebClient 已过时。请改用 HttpClient。” https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/async-expressions
这个例子使用 HttpClient 看起来怎么样?
需要说明的是,我是 Web 开发的新手,但我确实了解异步表达式是什么,只是在将示例转换为使用 HttpClient 时遇到了麻烦。
open System.Net
open Microsoft.FSharp.Control.WebExtensions
let urlList = [ "Microsoft.com", "http://www.microsoft.com/"
"MSDN", "http://msdn.microsoft.com/"
"Bing", "http://www.bing.com"
]
let fetchAsync(name, url:string) =
async {
try
let uri = new System.Uri(url)
let webClient = new WebClient()
let! html = webClient.AsyncDownloadString(uri)
printfn "Read %d characters for %s" html.Length name
with
| ex -> printfn "%s" (ex.Message);
}
let runAll() =
urlList
|> Seq.map fetchAsync
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
runAll()