2

そのため、回答を探して2時間近く送信しましたが、何も機能していません. webbrowser オブジェクトを介していくつかの Cookie を送信する必要がありますが、何らかの理由で Cookie が PHP ファイルによって読み取られません。

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

そして、クッキーを送信する私の VB コード:

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

繰り返しますが、助けをいただければ幸いです。はい、webbrowser オブジェクトを介して送信する必要があります。MSDN データベースも参照しましたが、それでもこの問題についてはほとんど解明されていません。

- - - - - - - - - - - - - - - - - - - - - 答え - - - -------------------------------------------

そこで、InternetSetCookie メソッドを使用して、Cookie を作成する次のコードを作成しました。

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
4

2 に答える 2

3

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, lpszCookieData As 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
于 2012-07-31T01:45:38.613 に答える
0

VB.Net Webbrowser コントロールの Cookie を手動で設定するために使用する古いバージョンを次に示します。

    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
于 2016-06-15T13:23:06.900 に答える