Delphi 7 TIdHttp发布一个带有可变字段的表单

时间:2015-01-19 20:18:41

标签: delphi variables post field indy

我需要有关学校相关问题的帮助。

这是去年的测试,但我失去了答案,这是一个繁忙的一年,我不记得杰克因为我们不再使用Delphi了。

我们有这个网络表单:

<form action="action" id="id" method="post">

    <input type="text" name="var_name_1" value="var_value_1"/>
    <input type="text" name="var_name_2" value="var_value_2"/>

    <input type="text" name="constant_name" value="constant_value" />
    <input type="submit" name="button" value="submit" />
</form>

var_name_1var_name_2var_value_1var_value_2是四个不同的字段名称和值,每次请求页面时它们都会更改,例如它们可能是这样的

<input type="text" name="12345" value="566"/>
<input type="text" name="1222" value="4444abcd"/>

然后,如果您再次请求该页面,他们会喜欢这个

<input type="text" name="666" value="123456789"/>
<input type="text" name="XXXLUKEXXX" value="A is the first letter"/>

我相信你明白了,我只需要澄清一些。

我记得如何使用Indy组件发布(我认为):

c := tidhttp.Create(self);
p := tstringlist.Create;

p.Add('var_name_1=var_value_1');
p.Add('var_name_2=var_value_2');
p.Add('constant_name=constant_value');
p.Add('button=submit');

result := c .Post('http://www.test.com',p);

p.Free;
c.Free;

但我不知道如何获取那些随机字段名称和值。特别是他们改变了。我知道如何使用TWebBrowser执行此操作,但我需要Indy版本,因为我们转移到原始套接字。

1 个答案:

答案 0 :(得分:1)

为了满足您的要求,您必须下载实际的HTML本身(例如使用TIdHTTP.Get())并从中解析网络表单数据,就像任何网络浏览器一样。解析HTML不在Indy本身的范围内。 Delphi可以使用第三方HTML解析器,或者您可以手动解析HTML,因为您确切知道要查找的内容。