4

WinForm アプリケーションのデフォルト ブラウザでアプリケーションの URL を開きたいです。そして、いくつかのデータをクエリ文字列としてではなく、HTTP POST メソッドとして送信します。問題は、デフォルトのブラウザで 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」ボタンをクリックすると. ブラウザを開いてログ データをログイン ページに送信し、ユーザーがログ モードでサイトにアクセスできるようにします。

4

1 に答える 1

1

あなたの問題にまだ解決策が必要かどうかはわかりませんが、あなたのコードを使用して、同様の問題の代替案を作成します。私は同じ要求を持っています。ユーザーが AppForm ボタンをクリックして Web サイトにログインする必要がありますが、投稿データを VB アプリからナビゲーターに送信する方法が見つかりませんでした (1 つのソリューションが IE/ Edge ですが、私のユーザーは IE/FF/Chrome を使用できます)。したがって、解決策を見つけるために私が行った手順は次のとおりです。

  1. ユーザーが接続するためにクリックする必要があるボタンは、コードを使用しています
  2. にはpostData、Web サイトがユーザーを識別するために必要なすべてのデータ (ユーザー名やパスワードなど) + IP アドレスが含まれます。
  3. ウェブサイトはこれらのデータをチェックし、すべて問題なければ一意の 32 ビット キーを生成し、データベースに保存します。
  4. 次に、Web サイトが json 応答を送信します{"status" => "ok", "token" => $key, "ip" => $ipFromPostRequest}
  5. VB アプリは、 http: //www.website.com/auto-login/32-BITS- のようなリンクを使用して、プログラムを開きます (既定のブラウザーでリンクを開くコードがいくつかあります。IE または FF が定義されていない場合) 。生成されたキー
  6. Web サイトは、キーと IP が一致するかどうかをデータベースでチェックします
  7. Web サイトがセッションを作成し、ユーザーをホームにリダイレクトし、データベースからキーを削除します

セキュリティ上の理由から、これは最善の解決策ではないと思いますが、私の側では、これは一意のコンピューター名と内部 IP アドレスを持つ会社のネットワークであり、この手順は機能しています。

于 2017-12-14T13:13:05.747 に答える