3

イントラネットには、http://server1/rsyncwebgui.php2 つのファイル共有間で rSync をトリガーする簡単な方法を提供する Web ページがあります。興味深いセキュリティ上の理由から、これが私たちが取らなければならないルートです。

Web ページは次のようになります。

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <title>Rsync web gui</title>
</head>
<body>
  <script language="javascript">
    window.onload = function () { setTimeout(submitForm, 10000); }
    function submitForm() { document.getElementById('myform').submit(); }
  </script>
<h3> Execute rsync between server2 and server3</h3>
<form id="myform" method="POST">
  <input type="hidden" name="resync" value="false">
  <input type="hidden" name="scanscheduled" value="false">
  <input type="submit" value="Start sync">
</form>
<p>
  <script language="javascript">
    window.onload = function () {
      if (confirm('Are you sure to start the sync?')) {
  var formobj = document.getElementById('myform');
  formobj.elements['resync'].value = 'true';
  formobj.submit();
      }
    }
  </script>
</p>
<p><a href="/rsyncwebgui.php">Refresh page</a></p>

</body></html>

ユーザーがボタンをクリックすると、[OK/キャンセル] ダイアログが表示され、確認を求められます。[OK] をクリックすると、ページがポストバックされ、rsync がトリガーされます。

リモートの C# コンソール アプリケーションからこの対話を行うにはどうすればよいでしょうか?

4

3 に答える 3

4

現在VSにチェックインできませんが、次のようになります。

string postDataStr = string.Format("resync=true&scanscheduled=&otherpara=xyz");
byte[] postData = Encoding.ASCII.GetBytes(postDataStr);

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://server1/rsyncwebgui.php"));
req.Method= "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postData.Length;
using(var reqStream = req.GetRequestStream())
{
    reqStream.Write(postData, 0, postData.Length);
}

HttpWebResponse response = (HttpWebResponse )req.GetResponse();
于 2012-06-01T08:40:54.403 に答える
0

HiTech Magicが呼び出したWatiNまたはSeleniumの場合は+1。Telerik の無料のテスト フレームワークを試すこともできます。(開示: 私は Test Studio のエバンジェリストなので、少し偏見があります...)

コマンド ラインから呼び出す簡単な Ruby スクリプトを作成できる Watir を使用することもできます。私は Ruby と Watir を、このようなあらゆる種類の同様の状況に使用します。

于 2012-06-06T12:37:22.157 に答える
0

WaitnSeleniumなどの自動化ライブラリを使用します。どちらも無料で非常によく似た API であり、どちらにも .Net ライブラリがあります。

それらは Web テスト用ですが、あらゆる Web 自動化にも同様に機能します (私はそれらを使用して eBay オークションを送信および修正します:))。

どちらも複数のブラウザー用のドライバーを備えています。

于 2012-06-01T08:47:59.070 に答える