2016-08-03 38 views
4

我想在WinForm應用程序的默認瀏覽器中打開我的應用程序的URL。 然後發送一些數據作爲HTTP POST方法而不是查詢字符串。 現在的問題是,如果我想在默認瀏覽器打開URL我用 驗證碼:如何在WinForm的瀏覽器中打開默認的Windows瀏覽器並將HTTP發佈數據發送到打開的Url?

Process.Start("http://www.ketabchin.com/sort) 

但在這個命令我不能發佈數據發送到URL 然後我用這個代碼:

Public Shared Function PostMessageToURL(url As String) As String 
    Dim request As WebRequest = WebRequest.Create("https://www.ketabchin.com/windows-logged") 
    request.Method = "POST" 
    Dim postData As String = "u=" & FrmMain.Username & "&p=" & FrmMain.Password & "&url=" & url 
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) 
    request.ContentType = "application/x-www-form-urlencoded" 
    request.ContentLength = byteArray.Length 
    Dim dataStream As Stream = request.GetRequestStream() 
    dataStream.Write(byteArray, 0, byteArray.Length) 
    dataStream.Close() 
    Dim response As WebResponse = request.GetResponse() 
    Console.WriteLine(CType(response, HttpWebResponse).StatusDescription) 
    dataStream = response.GetResponseStream() 
    Dim reader As New StreamReader(dataStream) 
    Dim responseFromServer As String = reader.ReadToEnd() 

    reader.Close() 
    dataStream.Close() 
    response.Close() 
    Return responseFromServer 
End Function 

這一個發送HTTP POST請求數據到URL,但我無法打開它或默認的Web瀏覽器的響應。 我該怎麼做? 背後的邏輯是。我有一個WinForm應用程序,當我的用戶在我的應用程序中點擊「goto website」buttton時。我想打開瀏覽器並將登錄數據發送到登錄頁面,以便用戶可以以登錄模式訪問站點。

回答

1

我不知道你的問題是否仍然需要解決方案,但是我使用你的代碼來替代類似的問題。我有同樣的要求,我需要一個用戶點擊一個AppForm按鈕來登錄一個網站,但我沒有找到任何方式將發佈的數據從VB應用程序發送到導航器(可能有一個解決方案可能與IE /邊緣,但我的用戶可以使用IE/FF/Chrome)。因此,這裏有我爲尋求解決辦法的步驟:

  1. 其中用戶必須點擊正在使用您的代碼
  2. postData包含該網站需要識別用戶的所有數據(如連接按鈕用戶名和密碼)+ IP地址
  3. 網站檢查這些數據,如果一切都還好它生成一個唯一的32位密鑰並將其存儲在數據庫
  4. 然後網站發送JSON響應{"status" => "ok", "token" => $key, "ip" => $ipFromPostRequest}
  5. VB應用程序現在正在開設一個程序(你可以找到一些代碼來打開默認瀏覽器的鏈接,如果不喜歡http://www.website.com/auto-login/32-BITS-GENERATED-KEY
  6. 在數據庫網站檢查鏈接定義IE或者FF)如果key和IP對應
  7. 網站創建一個會話並重定向用戶到家庭並刪除密鑰從數據庫

我認爲這不是最好的解決方案出於安全原因,但在我這邊是一個compagny網絡,具有獨特的計算機名稱和內部IP地址,此過程正在工作。