QT应用GET请求正常但POST请求失效(Hostinger迁移后)
问题:QT POST请求无法在Hostinger主机上获取$_POST参数
现象
GET请求正常工作
PHP代码:
<?php include_once("_config.php"); $api = $_GET['api']; echo $api; ?>
QT调用代码:
QUrl url(path + "/_getcl.php?api=testing"); QNetworkRequest request(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); networkManager->get(request, params.query().toUtf8());
POST请求无法获取$_POST['api']值
PHP代码:
<?php include_once("_config.php"); $api = $_POST['api']; echo $api; ?>
QT调用代码:
QUrl url(path + "/_getcl.php"); QNetworkRequest request(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QUrlQuery params; params.addQueryItem("api", "testing"); networkClients->post(request, params.query().toUtf8());
注:上述代码在旧主机服务上可正常运行,迁移至Hostinger新主机后出现POST参数无法获取的问题
解决办法
检查Hostinger的PHP配置
Hostinger默认配置可能存在参数限制,导致POST数据无法解析。可创建phpinfo.php文件查看关键配置:<?php phpinfo(); ?>重点核对:
post_max_size与upload_max_filesize:确保值大于你发送的POST数据大小request_order或variables_order:确认包含P(代表POST参数),例如GPCS
直接读取原始POST数据
部分主机配置会禁用$_POST自动解析,可改用php://input获取原始数据并手动解析:<?php include_once("_config.php"); parse_str(file_get_contents("php://input"), $postData); $api = $postData['api'] ?? ''; echo $api; ?>完善QT请求的头部设置
显式添加Content-Length头部,确保请求参数被正确识别:QByteArray postData = params.query().toUtf8(); request.setHeader(QNetworkRequest::ContentLengthHeader, postData.size()); networkClients->post(request, postData);排查.htaccess规则干扰
迁移后的.htaccess文件可能存在URL重写规则,导致POST参数丢失。可暂时重命名.htaccess文件测试是否恢复正常。
内容的提问来源于stack exchange,提问作者TLP lprt
相关产品推荐
相关产品推荐

