gpt4 book ai didi

html - 在 Delphi 中使用 TIdHTTP 提交表单并检索数据(不是通常的)

转载 作者:行者123 更新时间:2023-12-02 02:29:36 25 4
gpt4 key购买 nike

存在一个网页(www.someurl.co.uk),其中除其他内容外,还有一个包含输入字段和图像的表单。

在浏览器中,当用户在输入字段中输入字符串并单击图像时,会提交表单并生成另一个页面 (www.someurl.co.uk/results.php),其中包含以下内容:包含一些结果的表格。

我需要 Delphi 填写第一页表单中的字符串,提交表单并从结果页面上的表格中获取几个单元格的内容。

我已经使用 TIdHTTP 组件使用下面的代码将数据发布到表单,但随后我在备忘录框中看到的文本只是初始页面 (www.someurl.co.uk) 的 html。

请有人帮助我使用正确的代码从结果页面获取 BlaBla_A、BlaBla_C、BlaBla_C 和 BlaBla_D 值 - 并知道哪个是哪个?

(虽然我对Delphi很满意,但我对网页和HTML了解不多,这是我第一次使用Indy组件)

这是我目前使用的代码

procedure TForm1.Button2Click(Sender: TObject);
var
Response: TStringStream;
Params: TStringList;
begin
Params := TStringList.Create;
try
Params.Add('thedata=' + 'MyString');
Response := TStringStream.Create('');
try
IdHTTP1.Post('www.someurl.co.uk', Params, Response);
memo1.Text := Response.DataString;
except
on E: Exception do
begin
showmessage('Error: ' + E.Message);
end;
end;

finally
Params.Free;
Response.Free;
end;

end;

数据输入/提交页面 (www.someurl.co.uk) 的重要部分如下所示

</div>
<h3>Enter the data you want to look for then click FIND</h3>
<form action="results.php" method="post" name="form1" target="_parent"
id="form1"
onsubmit="if (document.getElementById('text').value==''
|| document.getElementById('text').value=='ENTER DATA')
{alert ('Please enter data first then click FIND');
return false;}
else
return true;">

<input name="thedata" type="text" id="text" value="ENTER DATA"
onclick="effectClear(this.id);this.value = '';"
class="validate[required]"/>

<input type="image" src="../images/find.png" name="image" id="homebutton" />
</form>
</div>

结果页面的重要部分 (www.someurl.co.uk/results.php) 如下所示

<div id="results_details">
<table id="results_details_table" border="0">
<tr>
<td class="result_general"><h2>Here are your results</h2><br/></td>
<td class="result_info">
<label>Result_A</label><br/>BlaBla_A<br/>
<label>Result_B</label><br/>BlaBla_B<br/>
</td>
<td class="result_info">
<label>Result_C</label><br/>BlaBla_C<br/><br/>
<label>Result_D</label><br/>BlaBla_D<br/><br/>
</td>
</tr>
</table>
</div>

最佳答案

您将数据发布到此网址,这是错误的:

IdHTTP1.Post('www.someurl.co.uk', Params, Response);

这就是为什么你要再次返回初始页面 - 这就是你真正要求的!

您需要改为发布到此网址:

IdHTTP1.Post('http://www.someurl.co.uk/results.php', Params, Response);

顺便说一句,您根本不需要 TStringStreamPost() 可以为您返回字符串数据:

procedure TForm1.Button2Click(Sender: TObject);
var
Params: TStringList;
begin
Params := TStringList.Create;
try
Params.Add('thedata=' + 'MyString');
try
memo1.Text := IdHTTP1.Post('www.someurl.co.uk', Params);
except
on E: Exception do
begin
ShowMessage('Error: ' + E.Message);
end;
end;
finally
Params.Free;
end;
end;

关于html - 在 Delphi 中使用 TIdHTTP 提交表单并检索数据(不是通常的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com