• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            如何實現自動化 Internet Explorer 以 POST 表單數據


            ?

            概要
            如 Microsoft Visual Basic 自動化控制器可以自動化 Internet Explorer (IE) 發送數據使用 POST...

            如 Microsoft Visual Basic 自動化控制器可以自動化 Internet Explorer (IE) 發送數據使用 POST 方法的 HTTP 服務器 (如 Internet Information Server (IIS)。 本文演示如何使自動從 Visual Basic 并從簡單的 Visual C++ 應用程序執行窗體數據的 POST 的 IE。 該示例說明了整個 Internet Explorer 應用程序的自動化時, 相同的技術可應用于 Web 瀏覽器 ActiveX 控件當宿主于應用程序中時。

            更多信息
            幾種方法可用于將數據發送到 HTTP 服務器。 GET 和 POST 是目前最常見的。 POST 通常用于表單數據提交到 HTTP 服務器數據超過最大允許傳輸...

            幾種方法可用于將數據發送到 HTTP 服務器。 GET 和 POST 是目前最常見的。 POST 通常用于表單數據提交到 HTTP 服務器數據超過最大允許傳輸使用 GET 方法時。 此限制通常是 2K 數據。

            IE 公開 IWebBrowser(App) 接口到自動化控制器。 在 IWebBrowser(App) 接口公開一個導航方法。在接口定義語言 (IDL) 語法 (通用表示派生的同時 Visual Basic 和 Visual C++ 語法),Navigate 方法類似于以下:
            HRESULT Navigate([in] BSTR URL, [in] VARIANT* Flags,
                            [in] VARIANT* TargetFrameName, [in] VARIANT* PostData,
                            [in] VARIANT* Headers);
            ,以便執行 POST,僅,URL、 PostData 和 Headers 參數才相關。 在其他一個參數,請參閱 Internet Client SDK 文檔信息。

            要調用導航 POST 到 HTTP 服務器的表單數據,URL 參數必須指定一個有效的地址 PostData 參數必須包含的字節的 SAFEARRAY 而且 Headers 參數必須包含 BSTR 包含以下 HTTP 標頭:
            應用內容的類型: 程序 / x www 的窗體的 urlencoded
            此標頭指示發送的數據進行編碼 HTML 規范中指定的規則。

            Internet Explorer 版本 3.0、 3.01 和 3.02 不支持 HTTP 過帳數據通過 Navigate 方法的服務器。 WinInet 和 URL 的標記是兩個可能的替代方法。 有關 WinInet 和標記的詳細信息,請參閱此參考一節。

            請注意 Internet Explorer 腳本對象模型對象"窗口"有"定位"方法也。 這 Navigate 方法將只接受 URL,不能向 Web 服務器的 POST 數據。

            若要測試以下示例,以下 Active Server Page (ASP) 應將保存到文件 NAVPOST.ASP 目錄中運行 Internet Information Server (IIS) 版本 3.0 的 NT 4.0 服務器上。 目錄應將識別由 IIS 為虛擬根目錄的執行權限:
               <HTML>
               <%
               cFlavor = Request("Flavor")
               cName = Request("FName")
               %>
               <BODY>
               Hello, <% =cName %>. <br>
               One scoop of <% =cFlavor %> coming right up!
               </BODY>
               </HTML>

            Visual Basic

            要演示在 Visual Basic 中的 POST,執行下面的步驟:

            1. Visual Basic 中,請啟動新的標準 EXE 項目。 默認情況下會創建 Form 1。 將下列控件添加到 Form 1:
                 Object                     Name                  Caption
                 -------------------------------------------------------------------
              
                 Label                      lblName                First Name
                 Label                      lblFlavor              Flavor
                 CommandButton              cmdSubmit              Submit
              
                 ComboBox                   cboFlavor
                 TextBox                    txtName
                 TextBox                    edtPostData
              (將多行 edtPostData 應和有滾動條)
            2. 從項目菜單中調用"參考",并 for"Microsoft Internet Controls"(SHDOCVW.DLL) 中添加對項目的引用。 請確保這是從引用對話框和不只是從組件對話框。
            3. 一般聲明中插入以下代碼部分:
                    Dim g_oIE As InternetExplorer ' Global reference to an
                                                  ' instance of IE
                    Private Sub cmdSubmit_Click()
                    edtPostData.Text = ""  ' Initialize an edit box for testing
                    ReDim aByte(0) As Byte ' Array of bytes to hold data to post
              
                    ' Extract the URL encoded data from the UI,
                    ' and pack it into an array of bytes
                    cFlavor = cboFlavor.List(cboFlavor.ListIndex)
                    cParamName = "FName="
                    cParamFlavor = "Flavor="
                    cSeparator = "&"
                    cPostData = cParamName & txtName.Text _
                       & cSeparator & cParamFlavor & cFlavor
                    PackBytes aByte(), cPostData
              
                    ' For testing, rebuild the POST data and stuff
                    ' it into an edit box
                    For i = LBound(aByte) To UBound(aByte)
                        edtPostData = edtPostData + Chr(aByte(i))
                    Next
              
                    Dim vPost As Variant
                    vPost = aByte ' Assign the byte array to a VARIANT
                    Dim vFlags As Variant
                    Dim vTarget As Variant
                    Dim vHeaders As Variant
                    vHeaders = _
                       "Content-Type: application/x-www-form-urlencoded" _
                       + Chr(10) + Chr(13)
              
                    ' You're done. Now call Navigate
                    ' Note: modify path to server as appropriate
                    g_oIE.Navigate "http://<server>/scripts/navpost.asp", _
                       vFlags, vTarget, vPost, vHeaders
              
                    End Sub
              
                    Private Sub Form_Load()
                    ' Create an instance of IE
                    Set g_oIE = New InternetExplorer
                    g_oIE.Visible = True
              
                    ' Populate a combobox with some flavor choices
                    cboFlavor.List(0) = "Vanilla"
                    cboFlavor.List(1) = "Chocolate"
                    cboFlavor.List(2) = "Strawberry"
                    cboFlavor.ListIndex = 0 ' The default choice
                    End Sub
              
                    ' Utility function to pack the data to post into an array of bytes
                    Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String)
                    iNewBytes = Len(PostData) - 1   ' Get rid of the null termination
                    If iNewBytes < 0 Then
                     Exit Sub
                    End If
                    ReDim ByteArray(iNewBytes)
                    For i = 0 To iNewBytes
                     ch = Mid(PostData, i + 1, 1)
                     If ch = Space(1) Then
                        ch = "+"
                     End If
                     ByteArray(i) = Asc(ch)
                    Next
                  End Sub
            4. 修改在調用該 URL 定位根據,關閉所有正在運行的實例的 IE,并從運行菜單中選擇開始。
            5. 在名字文本框中輸入您的姓名,選擇一個的風格,然后單擊提交命令按鈕。 Visual Basic 窗體數據將過帳到 HTTP 服務器,并且響應將顯示在可見的瀏覽器窗口中。

            Visual C++

            要演示在 Visual C++ 中的 POST,執行下面的步驟:

            1. 確保安裝了 ActiveX 或 Internet Client SDK。
            2. 啟動 Visual C++,并創建一個新的 Win 32 控制臺項目。
            3. 創建一個新的文本文檔并添加下面的代碼:
                    #include <windows.h>
                    #define INITGUID
                    #include <initguid.h>
                    #include <exdisp.h>
                    #include <memory.h>
              
                    HRESULT GetPostData(LPVARIANT pvPostData);
              
                    void main()
                    {
                       HRESULT hr;
                       IWebBrowserApp* pWBApp = NULL; // Derived from IWebBrowser
                       BSTR bstrURL = NULL, bstrHeaders = NULL;
                       VARIANT vFlags = {0},
                          vTargetFrameName = {0},
                          vPostData = {0},
                          vHeaders = {0};
              
                       if (FAILED(hr = CoInitialize(NULL)))
                       {
                          return;
                       }
              
                       if (FAILED(hr = CoCreateInstance(CLSID_InternetExplorer,
                          NULL,
                          CLSCTX_SERVER,
                          IID_IWebBrowserApp,
                          (LPVOID*)&pWBApp)))
                       {
                          goto Error;
                       }
              
                       bstrURL = SysAllocString(L"http://<server>/scripts/navpost.asp");
                       if (!bstrURL)
                       {
                          goto Error;
                       }
              
                       bstrHeaders = SysAllocString(
                          L"Content-Type: application/x-www-form-urlencoded\r\n");
                       if (!bstrHeaders)
                       {
                          goto Error;
                       }
              
                       V_VT(&vHeaders) = VT_BSTR;
                       V_BSTR(&vHeaders) = bstrHeaders;
              
                       hr = GetPostData(&vPostData);
                       hr = pWBApp->Navigate(bstrURL, &vFlags,
                                &vTargetFrameName, &vPostData, &vHeaders);
                       pWBApp->put_Visible(VARIANT_TRUE);
              
                    Error:
                       if (bstrURL) SysFreeString(bstrURL);
                       if (bstrHeaders) SysFreeString(bstrHeaders);
                       VariantClear(&vPostData);
                       if (pWBApp) pWBApp->Release();
                       CoUninitialize();
                    }
              
                    // Pack some data into a SAFEARRAY of BYTEs. Return in a VARIANT
                    HRESULT GetPostData(LPVARIANT pvPostData)
                    {
                       HRESULT hr;
                       LPSAFEARRAY psa;
                       LPCTSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
                       UINT cElems = lstrlen(cszPostData);
                       LPSTR pPostData;
              
                       if (!pvPostData)
                       {
                          return E_POINTER;
                       }
              
                       VariantInit(pvPostData);
              
                       psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
                       if (!psa)
                       {
                          return E_OUTOFMEMORY;
                       }
              
                       hr = SafeArrayAccessData(psa, (LPVOID*)&pPostData);
                       memcpy(pPostData, cszPostData, cElems);
                       hr = SafeArrayUnaccessData(psa);
              
                       V_VT(pvPostData) = VT_ARRAY | VT_UI1;
                       V_ARRAY(pvPostData) = psa;
                       return NOERROR;
                    }
            4. 修改適當,URL 引用,并保存代碼。 將其添加到該的項目,然后生成。
            5. 關閉所有瀏覽器實例并運行該應用程序。
            6. 切換到正在運行的實例的 IE,以查看數據的過帳。
            午夜精品久久久久久影视777| 久久精品国产亚洲αv忘忧草| 国产激情久久久久影院小草| 精品久久久久久无码免费| 日韩精品无码久久一区二区三| 少妇久久久久久被弄高潮| 91麻豆精品国产91久久久久久| 亚洲欧美另类日本久久国产真实乱对白 | 久久精品夜夜夜夜夜久久| 中文字幕久久欲求不满| 久久精品国产男包| 久久精品免费观看| 久久无码AV中文出轨人妻| 99国产精品久久久久久久成人热| 欧美麻豆久久久久久中文| 久久久久久综合一区中文字幕| 久久婷婷色综合一区二区| segui久久国产精品| 无码人妻少妇久久中文字幕蜜桃 | 久久精品国产亚洲AV久| 国产精品欧美久久久久无广告| 久久精品无码午夜福利理论片| 亚洲?V乱码久久精品蜜桃| 人人狠狠综合久久亚洲婷婷| 久久久久久久久无码精品亚洲日韩 | 国产A级毛片久久久精品毛片| 久久国产高清一区二区三区| 91精品国产91久久综合| 亚洲va中文字幕无码久久| 中文字幕精品无码久久久久久3D日动漫| 久久99精品国产麻豆宅宅| 久久久久久无码Av成人影院 | 婷婷久久综合九色综合九七| 久久国产精品免费一区| 国产精品成人久久久久三级午夜电影 | 午夜不卡久久精品无码免费| 国产aⅴ激情无码久久| 伊人久久大香线蕉AV色婷婷色| 久久中文字幕人妻丝袜| 亚洲日本va午夜中文字幕久久| 久久影视综合亚洲|