【问题标题】:Getting cookies from WebBrowser in F#/C#在 F#/C# 中从 WebBrowser 获取 cookie
【发布时间】:2011-09-13 10:01:35
【问题描述】:

我的目标是从 webBrowser 控件中检索 cookie。我尝试通过引用来执行此操作,但 Event.map 不允许我返回值:

let getCookie(url:string) = 
    let form  = new Form(Text="Internet Navigator")
    form.AutoScaleDimensions <- new System.Drawing.SizeF(6.0F, 13.0F)
    form.AutoScaleMode <- System.Windows.Forms.AutoScaleMode.Font
    form.ClientSize <- new System.Drawing.Size(849, 593)
    form.ResumeLayout(false)
    form.PerformLayout()

    let wb = new WebBrowser()
    wb.Visible<-true
    wb.AutoSize<-true
    wb.Size <- new System.Drawing.Size(804, 800)
    form.Controls.Add(wb)
    form.Show()


    let cookie = ref ""

    wb.Navigate(url)
    wb.DocumentCompleted
    |> Event.map(fun _ -> cookie:= wb.Document.Cookie)
    !cookie

理想情况下,有一种方法可以从 Event.map(或类似的东西)中返回 cookie 值?

【问题讨论】:

    标签: c# winforms f# windowsformsintegration


    【解决方案1】:

    更新:从函数返回cookie值而不是使用回调

    let getCookie(url:string) = 
            let form  = new Form(Text="Internet Navigator")
            form.AutoScaleDimensions <- new System.Drawing.SizeF(6.0F, 13.0F)
            form.AutoScaleMode <- System.Windows.Forms.AutoScaleMode.Font
            form.ClientSize <- new System.Drawing.Size(849, 593)
            form.ResumeLayout(false)
            form.PerformLayout()
    
            let wb = new WebBrowser()
            wb.Visible<-true
            wb.AutoSize<-true
            wb.Size <- new System.Drawing.Size(804, 800)
            form.Controls.Add(wb)
            wb.DocumentCompleted |> Event.add (fun _ -> form.Close())
            wb.Navigate(url)
            form.ShowDialog() |> ignore
            wb.Document.Cookie
    
    [<STAThreadAttribute>]
    do
        let cookie = getCookie "http://www.google.com"
        Console.Read() |> ignore
    

    【讨论】:

    • 感谢您的回复,打印效果很好,但它无助于解决加载文档后尝试获取 cookie 值的问题,在我的示例中与 let 相同temp= ref " " ,让 f res = temp:=res,代码运行得非常快,所以 ref 总是 "",也许稍后 temp 将是正确的 cookie 值
    • 更新了从函数返回 cookie 值的答案
    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 2010-10-13
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2010-09-13
    • 2012-06-29
    相关资源
    最近更新 更多