ルーター構成を自動化するアプリケーションを作成しようとしています。残念ながら、私たちが使用しているルーターでは、telnet はオプションではありません。
そのため、C# WebClient クラスを使用して Cisco Web インターフェイスとやり取りする必要がありました。
今までは、NameValueCollection と WebClient.UploadValues を使用して必要なものをすべて設定できました。
フォームのすべての入力要素を取得し、フォームの入力タイプに対応する名前の値 Collection をアップロードして、それぞれの値を目的の設定に設定します。
しかし今、私は問題に遭遇しました。
フォームの 1 つでは、複数選択コントロールを使用して、入力タイプではなく、入力データの配列を処理しています。
私はこれを設定する方法について完全に途方に暮れています。
multiselect の html は次のとおりです。
<select multiple class="MultiSelect" name="PortRangeList" size="12" onChange="showList(this.form.PortRangeList);" style="width: 100%">
<option value="All Traffic{[(*-*-*)]}1;0;1;65535;0}">All Traffic [TCP&UDP/1~65535]</option>
<option value="DNS{[(*-*-*)]}2;17;53;53;0}">DNS [UDP/53~53]</option>
<option value="FTP{[(*-*-*)]}3;6;21;21;0}">FTP [TCP/21~21]</option>
...
</select>
入力タイプを使用していたときは、次のようにするだけです
NameValueCollection formNetworkData = new NameValueCollection();
formNetworkData["ipAddr"] = "192.168.1.2";
formNetworkData["lanMask"] = "255.255.255.0";
downloadedData = _routerWebClient.UploadValues(_routerIP + NETWORK, formNetworkData);
しかし、この新しいフォームのコードを見ると、送信する直前に表示され、複数選択のすべてのオプションが選択されています。
私はおそらくこの質問を不十分に尋ねたことを認識していますが、どんな支援も大歓迎です.
Chrome デバッガー PortRangeList の使用は、まさにあなたが言ったとおりです。
入力タイプは5種類
submitStatus、upnpOpen (など...)
それらの場合、私のコードは次のようになります
NameValueCollection formData = new NameValueCollection();
formData["submitStatus"]="1";
formData["upnpOpen"]="0";
downloadedData = _routerWebClient.UploadValues(SERVICE0, formData);
しかし、PortRangeList データを送信するために NameValueCollection を使用することはできません。これは、名前に複数の値を含めることができないためです。
どうやってそれを提出できますか?
WebClient.UploadData、WebClient.UploadFile、または WebClient.UploadString でしょうか?