代码之家  ›  专栏  ›  技术社区  ›  Ingo

如何使用Delphi Indy发布HTML表单2

  •  -1
  • Ingo  · 技术社区  · 8 年前

    我想用Delphi XE10 Indy发布以下HTML代码中的表单2(name=“voting\u maybe”)。

    <form method="post" name="voting_yes" class="dtyrd-form" action="&#x2F;vote&#x2F;yes" id="voting_yes">
    <button type="submit" name="submit" class="dtyrd-button&#x20;dtyrd-button-voting&#x20;dtyrd-button-color-green" value=""><span class="image"></span>Yes</button>
    </form>
    
    <form method="post" name="voting_maybe" class="dtyrd-form" action="&#x2F;vote&#x2F;maybe" id="voting_maybe">
    <input type="submit" name="submit" class="dtyrd-button&#x20;dtyrd-button-voting&#x20;dtyrd-button-color-grey" value="Maybe"> 
    </form>
    
    <form method="post" name="voting_no" class="dtyrd-form" action="&#x2F;vote&#x2F;no" id="voting_no">
    <input type="submit" name="submit" class="dtyrd-button&#x20;dtyrd-button-voting&#x20;dtyrd-button-color-red" value="No">
    </form>  
    

    我想这样做:

    PostStream := TIdMultiPartFormDataStream.Create;
    try
      PostStream.AddFormField('submit','submit');
    
      Response := HTTPClient.Post(url, PostStream);
    
    finally
      PostStream.Free;
    end;
    

    但是我如何才能将帖子发送到表格2(name=“voting\u maybe”)?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Remy Lebeau    8 年前

    只需填充 TStringList 具有 name=value 由定义的字符串 <input> 的字段 voting_maybe webform,然后 Post() action 该webform的属性。每个 <form> 元素将独立于任何其他元素发布 <表单(>); 在同一页上

    不使用 TIdMultiPartFormDataStream 在这种情况下 <表单(>); 元素没有 enctype="multipart/form-data" 属性。没有明确的 enctype ,默认值为 application/x-www-form-urlencoded ,这是 TStrings 版本 Post() 使用。

    例如:

    PostData := TStringList.Create;
    try
      PostData.Add('submit=Maybe');
      Response := HTTPClient.Post(baseurl+'/vote/maybe', PostData);
    finally
      PostData.Free;
    end;