如何通过 Delphi Indy Post 到 HTML 形成二
How to Post to HTML Form two with Delphi Indy
我想 Post 使用 Delphi XE10 Indy 到 Form 2 (name="voting_maybe") 在下面的 HTML 代码中。
<form method="post" name="voting_yes" class="dtyrd-form" action="/vote/yes" id="voting_yes">
<button type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-green" value=""><span class="image"></span>Yes</button>
</form>
<form method="post" name="voting_maybe" class="dtyrd-form" action="/vote/maybe" id="voting_maybe">
<input type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-grey" value="Maybe">
</form>
<form method="post" name="voting_no" class="dtyrd-form" action="/vote/no" id="voting_no">
<input type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-red" value="No">
</form>
我想这样做:
PostStream := TIdMultiPartFormDataStream.Create;
try
PostStream.AddFormField('submit','submit');
Response := HTTPClient.Post(url, PostStream);
finally
PostStream.Free;
end;
但是如何将 Post 发送到 Form 2 (name="voting_maybe")?
只需使用 voting_maybe
网络表单的 <input>
字段定义的 name=value
字符串填充 TStringList
,然后 Post()
到 URL 由该网络表单的 action
属性指定。每个 <form>
元素都将独立于同一页面上的任何其他 <form>
发布。
在这种情况下不要使用 TIdMultiPartFormDataStream
,因为您的 <form>
元素没有 enctype="multipart/form-data"
属性。如果没有明确的 enctype
,默认值为 application/x-www-form-urlencoded
,这是 Post()
的 TStrings
版本使用的。
例如:
PostData := TStringList.Create;
try
PostData.Add('submit=Maybe');
Response := HTTPClient.Post(baseurl+'/vote/maybe', PostData);
finally
PostData.Free;
end;
我想 Post 使用 Delphi XE10 Indy 到 Form 2 (name="voting_maybe") 在下面的 HTML 代码中。
<form method="post" name="voting_yes" class="dtyrd-form" action="/vote/yes" id="voting_yes">
<button type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-green" value=""><span class="image"></span>Yes</button>
</form>
<form method="post" name="voting_maybe" class="dtyrd-form" action="/vote/maybe" id="voting_maybe">
<input type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-grey" value="Maybe">
</form>
<form method="post" name="voting_no" class="dtyrd-form" action="/vote/no" id="voting_no">
<input type="submit" name="submit" class="dtyrd-button dtyrd-button-voting dtyrd-button-color-red" value="No">
</form>
我想这样做:
PostStream := TIdMultiPartFormDataStream.Create;
try
PostStream.AddFormField('submit','submit');
Response := HTTPClient.Post(url, PostStream);
finally
PostStream.Free;
end;
但是如何将 Post 发送到 Form 2 (name="voting_maybe")?
只需使用 voting_maybe
网络表单的 <input>
字段定义的 name=value
字符串填充 TStringList
,然后 Post()
到 URL 由该网络表单的 action
属性指定。每个 <form>
元素都将独立于同一页面上的任何其他 <form>
发布。
在这种情况下不要使用 TIdMultiPartFormDataStream
,因为您的 <form>
元素没有 enctype="multipart/form-data"
属性。如果没有明确的 enctype
,默认值为 application/x-www-form-urlencoded
,这是 Post()
的 TStrings
版本使用的。
例如:
PostData := TStringList.Create;
try
PostData.Add('submit=Maybe');
Response := HTTPClient.Post(baseurl+'/vote/maybe', PostData);
finally
PostData.Free;
end;