首页 文章

Fsharp.data“路径中的非法字符”

提问于
浏览
1

我刚刚开始使用F#并正在探索FSharp.Data . 我正在尝试使用www.ncdc.noaa.gov上的网络服务 . 第一个问题是ncdc在请求中需要一个令牌 . 我尝试使用以下方法解决这个问题:

let apiUrl = "http://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCND&locationid=ZIP:28801&startdate=2010-04-01&enddate=2010-04-01"
    let aRequestString = 
            Http.RequestString(
                apiUrl, 
                httpMethod="GET", 
                headers = [ "token", "mytoken"])
    let sf = WeatherData.Load(aRequestString)

这似乎有用 - 小提琴手说我得到了一个对我和JSONLint看起来不错的结果,但是我得到了“路径中的非法字符” . 来自提供商 .

堆栈跟踪显示:

System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
System.IO.Path.Combine(String path1, String path2)
FSharp.Data.Runtime.IO.UriResolver.Resolve(Uri uri)
FSharp.Data.Runtime.IO.asyncRead(FSharpOption`1 _tp, UriResolver uriResolver, String formatName, String encodingStr, Uri uri)
FSharp.Data.Runtime.IO.asyncReadTextAtRuntime@238.Invoke(Uri uri)

1 回答

  • 3

    Load 方法采用URL或文件路径,并从那里加载数据 . 如果您自己下载数据,则需要使用 Parse 方法 .

    let apiUrl = "http://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=...."
    let aRequestString = 
            Http.RequestString(
                apiUrl, 
                httpMethod="GET", 
                headers = [ "token", "mytoken"])
    let sf = WeatherData.Parse(aRequestString) 
    //                   ^^^^^
    

相关问题