使用 WebClient 将输入单选类型的数据发布到特定 URL 的问题

Posted

技术标签:

【中文标题】使用 WebClient 将输入单选类型的数据发布到特定 URL 的问题【英文标题】:Problems to post data of input radio type to specific URL using WebClient 【发布时间】:2018-07-03 12:30:14 【问题描述】:

我需要使用带有 WebClient 的“HTTP Post”来将一些数据发布到特定的 URL。 我在将值传递给输入类型“Radio”时遇到了一些问题。

部分网页代码:

<li class='cua_cols'>NIF a seleccionar<br />
<big><strong>A********</strong></big>
</li>
<li><label for='wNif'><input type='hidden' id='wNif' name='wNif'  value='A********' /></label></li>
<li class='dos_cols'>
<label for='TIPONIF0'>
que actúa como
<br />
</label>
<b>Operador </b><input type='radio' id='TIPONIF0'  name='TIPONIF' value='OP' checked = 'checked'  />
<b>Autorizado </b><input type='radio' id='TIPONIF1'  name='TIPONIF' value='AU'  />
</li>
<li class='ancho_99'>&nbsp;</li><li class='cua_cols'>
<label for='wNifAut'>
NIF relacionado=
<br />
<input type='text' name='wNifAut' id='wNifAut' value='B********' maxlength='17' size='19'   onkeypress='javascript:if (event.keyCode == 13)  return false; ' onclick='' />
</label></li>
<li class='cua_cols'>
<label for='TIPONIF_SOL0'>
 que actúa como
<br />
</label>
<b>Operador </b><input type='radio' id='TIPONIF_SOL0'  name='TIPONIF_SOL' value='OP'  />
<b>Autorizado </b><input type='radio' id='TIPONIF_SOL1'  name='TIPONIF_SOL' value='AU' checked = 'checked'  />
</li>

下一个代码第一次正常工作,但今天只分配 wNifAut 值。

Dim requestData As New NameValueCollection()
requestData.Add("wNifAut", mnoCIF)
requestData.Add("TIPONIF1", "true")
requestData.Add("TIPONIF_SOL0", "true")
requestData.Add("Buscar", "Click")           

Dim request As Byte() = myWebClient.UploadValues(msStrURL, "POST", requestData)
mshtmlString = Encoding.UTF8.GetString(request)

【问题讨论】:

【参考方案1】:

OP 的解决方案。

页面的源代码也包含这个:

  <label for="VEZ"><input name="VEZ" id="VEZ" type="hidden" value=""></label>

<div class="AEAT_bloque_botones">
<input name="Buscar" class="AEAT_boton" accesskey="A" onkeypress='javascript:enviarDatos("BUSCAR1");' onclick='javascript:enviarDatos("BUSCAR1");' type="button" value="Buscar">
<input name="Limpiar" class="AEAT_boton" accesskey="D" onkeypress='javascript:resetear(getVarDom("Query"));' onclick='javascript:resetear(getVarDom("Query"));' type="button" value="Limpiar">
</div>

<script type="text/javascript">
function enviarDatos(opcion)  getVarDom("Query").VEZ.value=opcion;  
  getVarDom("Query").submit(); 
</script>

我更改了代码中的一些行:

  Dim requestData As New NameValueCollection()
            requestData.Add("wNif", mnoCIFComp)
            requestData.Add("wNifAut", mnoCIF)
            requestData.Add("TIPONIF", "AU")
            requestData.Add("TIPONIF_SOL", "OP")
            requestData.Add("VEZ", "BUSCAR1")

  Dim request As Byte() = myWebClient.UploadValues(msStrURL, "POST", requestData)
   msHTMLString = Encoding.UTF8.GetString(request)

重要变化

1) I indicated the input radio values with pair (name - value) instead of (id - 'true')
2) I assigned the value "BUSCAR1" to the hidden label, to simulated the JavaScript function.
3) In this case I had to assign the company cif.

【讨论】:

以上是关于使用 WebClient 将输入单选类型的数据发布到特定 URL 的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何创建将成为文本框、单选按钮或下拉输入的 Ember 组件;基于数据的类型?

一旦我检查了一种输入类型单选,如何禁用和启用输入类型提交?

在单选按钮列表的标签内呈现输入类型单选

输入类型单选按钮检查 else 语句在 jquery 中不起作用

链接单选按钮和文本输入

使用 Webclient 下载 Torrent 文件的问题