使用 FSharp.Data 的 F# 无法使 basicAuth 正常工作
F# using FSharp.Data not able to get basicAuth working
我是 F# 的新手,正在尝试使用 FSharp.Data 自动化 API,但我无法使基本身份验证正常工作。我知道有一些我无法破解的语法问题。请建议如何在代码的“(BasicAuth "username_api" "pwd_api")”部分消除此错误:此表达式的类型应为 'string' 但此处的类型为 'string * string'.
此外,我附上了一张图片以供快速参考。
这是我的测试:
[<Test>]
let getBasicAuthUsingData () =
let Authorization (credentials:string) = "Authorization", credentials
let BasicAuth (username:string) (password:string) =
let base64Encode (s:string) =
let bytes = Encoding.UTF8.GetBytes(s)
Convert.ToBase64String(bytes)
sprintf "%s:%s" username password |> base64Encode |> sprintf "Basic %s" |> Authorization
let apiURL = "http://sampleapi"
let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [ "Authorization", (BasicAuth "username_api" "pwd_api")])
printfn "Response of get is %s: " response
您两次添加了 header 的名称:第一次是在 Authorization
函数中,然后出于某种原因在 header 的列表中。
因此,header 列表的元素最终成为 ("Authorization", ("Authorization", "user:pass"))
,而不仅仅是 ("Authorization", "user:pass")
刚去掉是"Authorization"
个字符串之一:
let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [BasicAuth "username_api" "pwd_api"])
我是 F# 的新手,正在尝试使用 FSharp.Data 自动化 API,但我无法使基本身份验证正常工作。我知道有一些我无法破解的语法问题。请建议如何在代码的“(BasicAuth "username_api" "pwd_api")”部分消除此错误:此表达式的类型应为 'string' 但此处的类型为 'string * string'.
此外,我附上了一张图片以供快速参考。
这是我的测试:
[<Test>]
let getBasicAuthUsingData () =
let Authorization (credentials:string) = "Authorization", credentials
let BasicAuth (username:string) (password:string) =
let base64Encode (s:string) =
let bytes = Encoding.UTF8.GetBytes(s)
Convert.ToBase64String(bytes)
sprintf "%s:%s" username password |> base64Encode |> sprintf "Basic %s" |> Authorization
let apiURL = "http://sampleapi"
let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [ "Authorization", (BasicAuth "username_api" "pwd_api")])
printfn "Response of get is %s: " response
您两次添加了 header 的名称:第一次是在 Authorization
函数中,然后出于某种原因在 header 的列表中。
因此,header 列表的元素最终成为 ("Authorization", ("Authorization", "user:pass"))
,而不仅仅是 ("Authorization", "user:pass")
刚去掉是"Authorization"
个字符串之一:
let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [BasicAuth "username_api" "pwd_api"])