2016-08-03 40 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地址,此过程正在工作。