Получение куки из WebBrowser в F # / C # - PullRequest
1 голос
/ 13 сентября 2011

Моя цель - извлечь файлы 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

В идеале есть способ вернуть значение cookie из Event.map (или что-то в этом роде)?

1 Ответ

3 голосов
/ 13 сентября 2011

ОБНОВЛЕНО : чтобы вернуть значение 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
...