如何使用 Indy 中的 Post() 函数填充 HTML 页面中的框

问题描述 投票:0回答:1

如何从对话框中选择有关网站上显示的月份的文本,然后通过按“搜索”按钮发出命令?

我想使用 Indy 库中的

Post()
函数并从网站获取字符串结果。像这样:

TIdURI *URI = new TIdURI( address );
TStringList *PostData = new TStringList();
    
try
{
    PostData->Add( "years-select value=2024" );
    PostData->Add( "months-select value=03" );
    PostData->Add( "archive-select value=true" );
    
    String Response = IdHTTP->Post( URI->URI, PostData );
}

包含我感兴趣的字段的页面来源如下所示:

<form class="search-data" method="POST" name="post_from_date" class="pb-5"><div class="row align-items-end"><div class='col-lg-3 mr-3' > <label for='years-select' > Wybierz rok:</label><select class='form-select' id='years-select' name='years-select'><option value=2024  > 2024</option><option value=2023  > 2023</option><option value=2022  > 2022</option><option value=2021  > 2021</option><option value=2020  > 2020</option><option value=2019  > 2019</option><option value=2018  > 2018</option><option value=2017  > 2017</option><option value=2016  > 2016</option><option value=2015  > 2015</option><option value=2014  > 2014</option><option value=2013  > 2013</option><option value=2012  > 2012</option><option value=2011  > 2011</option><option value=2010  > 2010</option><option value=2009  > 2009</option><option value=2008  > 2008</option><option value=2007  > 2007</option><option value=2006  > 2006</option><option value=2005  > 2005</option><option value=2004  > 2004</option><option value=2003  > 2003</option><option value=2002  > 2002</option></select ></div><div class='col-lg-3 mr-3'><label for='months-select'> Wybierz miesiąc:</label><select class='form-select' id='months-select' name = 'months-select'><option value='01'  > styczeń</option><option value='02'  > luty</option><option value='03'  > marzec</option><option value='04' selected > kwiecień</option><option value='05'  > maj</option><option value='06'  > czerwiec</option><option value='07'  > lipiec</option><option value='08'  > sierpień</option><option value='09'  > wrzesień</option><option value='10'  > październik</option><option value='11'  > listopad</option><option value='12'  > grudzień</option></select></div><input type="hidden" name="archive-select" value="true"/><div class="col-lg-2"><button class="btn btn-primary" type="submit">Wyszukaj</button></div></div></form>
c++builder indy10
1个回答
0
投票

首先,您不需要

TIdURI
,因为您已经在字符串中拥有了 URL。只需将字符串按原样传递给
TIdHTTP::Post()

其次,您的

TStringList
值需要采用
name=value
格式,因此请删除
 value=
部分。

试试这个:

TStringList *PostData = new TStringList;
try
{
    PostData->Add( "years-select=2024" );
    PostData->Add( "months-select=03" );
    PostData->Add( "archive-select=true" );
    
    String Response = IdHTTP->Post( address, PostData );
}
__finally
{
    delete PostData;
}
© www.soinside.com 2019 - 2024. All rights reserved.