我正在使用Http类型的FSharpData.
type Http private() =
......
static member Request(url, ?query, ?headers, ?meth, ?body, ?cookies, ?cookieContainer, ?certificate) =
......
Run Code Online (Sandbox Code Playgroud)
但是,我需要扩展静态memeber Request来处理cookie.我不能继承该类,因为它的构造函数是私有的.
type Web () =
inherit Http() // Error
override Request
let ObSSOCookie = new Cookie()
......
Run Code Online (Sandbox Code Playgroud)
或者我必须创建一个具有调用静态成员函数的函数的模块?该模块可以具有相同的名称Http吗?
该Http类型是一个静态类,因为它是无状态的,所以它没有任何意义,从它继承.如果您想使用cookie并在请求中维护它们,您可以创建一个CookieContainer并在请求中重复使用它:
let cc = CookieContainer()
Http.RequestString("url1", cookieContainer = cc)
Http.RequestString("url2", cookieContainer = cc)
Run Code Online (Sandbox Code Playgroud)
如果你真的想,你可以像这样为它创建一个包装器:
type HttpWithState() =
let cookies = CookieContainer()
static member RequestString(url, ?params, ?headers, ...) =
Http.RequestString(url, ?params = params, ?headers = headers, ..., cookieContainer = cookies)
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
let http = HttpWithState()
http.RequestString("url1")
http.RequestString("url2")
Run Code Online (Sandbox Code Playgroud)
但是你不会Http直接使用这种类型获得那么多