如题,本人用IE登录了一个网站,想用WININET来获取登录后的浏览某网页的源码,
但不知如何调用已有COOKIE来会话。
请会的朋友们多多指教,谢了!

解决方案 »

  1.   

    能用控件调用其他浏览器的cookie么?
      

  2.   

    inet控件访问慢了点,想试试用纯API的来获取。
      

  3.   

    嗯,INET控件就是初始化,花的时间多了点,初始化完还是比较快的;但就是要外带OCX文件,
    不是绿化式,这不太喜欢,还是喜欢做成绿色软件,所以想用API,
    试过用WINHTTP语句,但比INET控件还慢,所以才想试试用WININET,
    会的人还请多多指教一下。还有就是为什么用WININET提交数据这么慢,有没有优化点的方法。提交数据代码如下:
    Public Function PostInfoKK(WebServer As String, WebPort, ScriptName As String, PostData As String) '调用示范:PostInfoKK("127.0.0.1", 80, "/a.asp", "Cmd=Fuck")
        On Error GoTo over
        Dim IntOpen As Long, IntConnect As Long, XHttpOpenRequest As Long, bRet As Boolean
        IntOpen = 0
        IntConnect = 0
        XHttpOpenRequest = 0
        '使用注册表访问设置。
        Const INTERNET_OPEN_TYPE_PRECONFIG = 0
        IntOpen = InternetOpen("http generic", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
        If IntOpen <> 0 Then
            '类型的服务访问。
            Const INTERNET_SERVICE_HTTP = 3
            Const INTERNET_DEFAULT_HTTP_WebPort = 80
            '更改服务器到服务器的名称
            IntConnect = InternetConnect(IntOpen, WebServer, WebPort, vbNullString, "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0)
            If IntConnect <> 0 Then
                '带来的数据通过线路即使本地缓存。
                Const INTERNET_FLAG_RELOAD = &H80000000
                XHttpOpenRequest = HttpOpenRequest(IntConnect, "POST", ScriptName, "HTTP/1.0", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
                If XHttpOpenRequest <> 0 Then
                    Dim HttpHeader As String
                    Const HTTP_ADDREQ_FLAG_ADD = &H20000000
                    Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000
                    HttpHeader = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
                    bRet = HttpAddRequestHeaders(XHttpOpenRequest, HttpHeader, Len(HttpHeader), HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD)
                    bRet = HttpSendRequest(XHttpOpenRequest, vbNullString, 0, PostData, Len(PostData))
                    Dim TheLoop As Boolean, RBuffer As String * 2048, ByteNumberRead As Long, IBuffer As String
                    TheLoop = True
                    While TheLoop
                        RBuffer = vbNullString
                        TheLoop = InternetReadFile(XHttpOpenRequest, RBuffer, Len(RBuffer), ByteNumberRead)
                        IBuffer = IBuffer & Left(RBuffer, ByteNumberRead)
                        If Not CBool(ByteNumberRead) Then TheLoop = False
                    Wend
                    PostInfoKK = IBuffer
                    bRet = InternetCloseHandle(XHttpOpenRequest)
                End If
                bRet = InternetCloseHandle(IntConnect)
            End If
            bRet = InternetCloseHandle(IntOpen)
        End If
        Exit Function
    over:
        PostInfoKK = ""
    End Function