如何从对话框中选择有关网站上显示的月份的文本,然后通过按“搜索”按钮发出命令?
我想使用 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>
首先,您不需要
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;
}