2012-07-30 103 views
1

所以我发送了近两个小时寻找答案,但没有任何工作。我要通过我的web浏览器对象发送一个几块饼干,但由于某些原因,Cookie不会被我的PHP文件中读取:在VB中通过WebBrowser发送Cookie

<?php die('Your username is '.$_COOKIE['user']); ?> 

而我的VB代码发送的cookie:

For i = 0 To 4 
uploadBoxes(i).Navigate("about:blank") 
uploadBoxes(i).Document.Cookie = "user=" & username.Text 
uploadBoxes(i).Navigate("http://*****/uploader/app.php") 
Next i 

再次,任何帮助将不胜感激,是的,我需要通过网页浏览器对象发送它。我也浏览了MSDN数据库,甚至对这个问题也没有多大的了解。

------------------------------------------ THE答案-------------------------------------------------

所以我把InternetSetCookie方法以及与此代码上制作饼干的工作上来:

Imports System.Runtime.InteropServices 

    ' No more data is available. 
    Const ERROR_NO_MORE_ITEMS = 259 

    ' The data area passed to a system call is too small. 
    Const ERROR_INSUFFICIENT_BUFFER = 122 

    Private Declare Function InternetSetCookie Lib "wininet.dll" _ 
    Alias "InternetSetCookieA" _ 
    (ByVal lpszUrlName As String, _ 
    ByVal lpszCookieName As String, _ 
    ByVal lpszCookieData As String) As Boolean 

Private sub something() 
       Dim bRet As Boolean 
       bRet = InternetSetCookie("http://*****/uploader/app.php", _ 
       "user", "admin") 
       If bRet = False Then 
        MsgBox("Failed") 
       End If 
       uploadBoxes(i).Navigate("http:/*****/uploader/app.php") 
End sub 

回答

2

http://pinvoke.net/default.aspx/wininet.InternetSetCookie

<DllImport("wininet.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _ 
     Public Shared Function InternetSetCookie(lpszUrl As String, _ 
     lpszCookieName As String, lpszCookieDataAs String) As Boolean 
    End Function 

Imports System.Runtime.InteropServices 
Sub InternetSetCookiePseudoCode() 
'`CookieCollection` was populated using HttpWebRequest/Response calls 
Dim i As Integer = 0 
InternetSetCookie("https://www.url.com/", Nothing, CookieCollection(i).ToString() & "; expires = Sun, 01-Jul-2014 00:00:00 GMT") 
'repeat for however many cookies you've got 

browser.Navigate("https://www.url.com/", True) 
End Sub 
+0

感谢您的帮助杰里米,这是我一直在寻找对于。 – 2012-07-31 11:19:56

0

下面是一些老的版本我使用的VB.Net WebBrowser控件手动设置cookies:

Private Declare Function InternetSetCookie Lib "wininet.dll" Alias "InternetSetCookieA" (
     ByVal lpszUrlName As String, 
     ByVal lpszCookieName As String, 
     ByVal lpszCookieData As String) As Long 

[...]

Dim CookieVal As String = "asdfghjkl12345" 
Dim CookieNamestr As String = "sessionid" 
Try 
    Dim Result As Long = InternetSetCookie("https://www.url.com/", CookieNamestr, CookieVal) 
Catch ex As Exception 
End Try