如何使用Indy的Post()函数提交HTML年月选择表单并获取网站响应
如何用Indy的Post()实现月份选择并提交查询
你的现有代码存在格式错误,POST数据需遵循字段名=值的键值对格式,而非你写的带标签属性的格式。结合页面表单源码,修正后的代码如下:
TIdURI *URI = new TIdURI(address); TStringList *PostData = new TStringList(); try { // 对应年份下拉框name="years-select",选择2024年 PostData->Add("years-select=2024"); // 对应月份下拉框name="months-select",选择03(三月) PostData->Add("months-select=03"); // 对应隐藏字段name="archive-select",值固定为true PostData->Add("archive-select=true"); String Response = IdHTTP->Post(URI->URI, PostData); // 此处可处理返回的Response结果,比如解析HTML内容 } __finally { // 释放资源,避免内存泄漏 delete URI; delete PostData; }
关键说明:
- 表单每个字段都要以
name属性值=选中值的格式添加到TStringList,这是HTTP POST表单数据的标准格式 - 月份下拉框的
value属性为字符串形式(如'03'),直接传03即可,无需额外引号 - 务必在
__finally块中释放动态分配的对象,防止异常导致内存泄漏
内容的提问来源于stack exchange,提问作者Jacek
相关产品推荐
相关产品推荐

