我如何在 QtCreator 中发布数据?

Posted

技术标签:

【中文标题】我如何在 QtCreator 中发布数据?【英文标题】:How can i Post the data in QtCreator? 【发布时间】:2011-11-10 08:34:30 【问题描述】:

这是我的 Qt 创建者代码,用于将数据发送到 php 服务器并获取响应。

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkAccessManager::connect(manager, SIGNAL(finished(QNetworkReply*)),this ,          SLOT(replyFinished(QNetworkReply*)));
QNetworkRequest *request = new   QNetworkRequest(QUrl("http://68.169.55.41/fss/verifylogindetails.php"));
QByteArray postData =" \"estate_id\":\"hsr\",\"emp_pin\":1234,\"emp_id\":\"santhosh\"";
request->setRawHeader( "User-Agent" , "Mozilla Firefox" );
request->setRawHeader( "charset", "utf-8" );
request->setRawHeader( "Connection", "keep-alive" );
manager->post(*request, postData );


void MainWindow::replyFinished(QNetworkReply *reply)

 QString data = reply->readAll().trimmed();
 qDebug() << data;
 

这是我的 php 代码,用于接收登录数据并与数据库值进行比较并发送响应。

<?php
include 'config.php'; 
$data = json_decode($_SERVER['HTTP_JSON']);
$con = mysql_connect($host, $user_name, $password);
if (!$con)

die('Could not connect: '.mysql_error());

mysql_select_db($db_name, $con);
$result = mysql_query("SELECT * FROM login_data_table");
while($row = mysql_fetch_array($result))

if((strcasecmp( $row['Emp_Id'], $data->emp_id) == 0) && ($row['Emp_Pin'] == $data- >emp_pin) && (strcasecmp( $row['Estate_Id'], $data->estate_id) == 0))

echo "SUCCESS"; 

else

echo "FAIL";


mysql_close($con);
?>

我的问题是.....我总是从服务器收到 FAIL 消息。即使我正在发送正确的登录详细信息。请帮助我在我的代码中哪里错了。

【问题讨论】:

你的 PHP 代码效率很低。我会用“WHERE”SQL 条件更改 while 循环。另一个建议:使用 PDO,而不是 mysql_* 函数。 感谢您的回复。我的数据库中只有一条记录。所以,我使用 while 循环而不是 WHERE 好吧,那么你可以跳过while部分,只调用一次mysql_fetch_array :)。 【参考方案1】:

我将从我自己的程序中发布一段代码。希望这会有所帮助:

void MainWindow::sendPost(url)

    QUrl params;
    params.addQueryItem("usrname", login);
    params.addQueryItem("passwrd", password);

    QByteArray data;
    data.append(params.toString());
    data.remove(0,1);

    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    QNetworkReply *reply = manager->post(QNetworkRequest(url), data);
    CONNECT(reply, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));


void MainWindow::replyFinished(QNetworkReply *reply)

 QString data = reply->readAll().trimmed();
 qDebug() << data;
 

PHP 代码将使用 $_POST 数组从程序中获取值($_POST['usrname'] 和 $_POST['password'] 保存从程序发送的两个值),而不是 $_SERVER。我不知道你为什么使用 $_SERVER。

【讨论】:

非常感谢。您的解决方案解决了我的问题。维托德·索斯诺夫斯基先生

以上是关于我如何在 QtCreator 中发布数据?的主要内容,如果未能解决你的问题,请参考以下文章

QtCreator:如何设置调试参数? [复制]

如何在 QtCreator 中进行远程编译

如何在 Linux 的 QTCreator 中使用 dlopen 打开的共享库中设置断点

如何在 QtCreator 的一个 QMainWindow 中添加多个主窗口?

如何在 Ubuntu 中从终端运行 Qtcreator?

如何在 QtCreator 中将图像转换为矩阵形式?