Post some data onto the local server by QNetworkAccessManager(Qt5)
Trying to post the paramaters onto the server but have no avail(following is my folder)
My file resides(my local host == C:\wamp\www)
https://farm4.staticflickr.com/3544/...ff858f14_c.jpg
bridge.html
Code:
<html>
<form action="general_query.php" method="post">
<input type="text" name="db_server">
<input type="text" name="db_user">
<input type="text" name="db_password">
<input type="text" name="db_database">
<input type="text" name="query_message">
</form>
</html>
general_query.php
Code:
<?php
$response = array();
$response["server"] = _$POST['db_server'];
$response["user"] = _$POST['db_user'];
$response["password"] = _$POST['db_password'];
$response["db"] = _$POST['db_database'];
$response["query_message"] = _$POST['query_message'];
echo($response);
?>
main.cpp
Code:
#include "MainWindow.hpp"
#include <QApplication>
#include <QDebug>
#include <QByteArray>
#include <QEventLoop>
#include <QNetworkReply>
#include <QTextCodec>
#include <QUrl>
#include <QUrlQuery>
int main(int argc, char *argv[])
{
QNetworkRequest request("http://127.0.0.1/bridge/bridge.html");
request.setHeader(QNetworkRequest::ContentTypeHeader,
"application/x-www-form-urlencoded");
QUrlQuery query;
query.addQueryItem("db_database", "a");
query.addQueryItem("db_password", "b");
query.addQueryItem("db_server", "c");
query.addQueryItem("db_user", "d");
query.addQueryItem("query_message", "e");
post_data.setQuery(query);
QNetworkAccessManager network_manager;
auto network_reply = network_manager.post(request,
query.query().toUtf8());
connect(network_reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
if(network_reply->error() == QNetworkReply::NoError){
raw_data = network_reply->readAll();
}else{
qDebug()<<network_reply->errorString();
}
qDebug()<<QTextCodec::codecForHtml(raw_data)->toUnicode(raw_data);
}
The results are same as the texts of the bridge.html but not the json as I expected
expected results
Code:
{
"server": "c"
"user": "d"
"password": "b"
"db": "a"
"query message": "e"
}
Re: Post some data onto the local server by QNetworkAccessManager(Qt5)
Shouldn't your query URL be the PHP script?
I.e. instead of
Code:
QNetworkRequest request("http://127.0.0.1/bridge/bridge.html");
using
Code:
QNetworkRequest request("http://127.0.0.1/bridge/general_query.php");
Cheers,
_
Re: Post some data onto the local server by QNetworkAccessManager(Qt5)
Quote:
Originally Posted by
anda_skoa
Shouldn't your query URL be the PHP script?
I.e. instead of
Code:
QNetworkRequest request("http://127.0.0.1/bridge/bridge.html");
using
Code:
QNetworkRequest request("http://127.0.0.1/bridge/general_query.php");
Cheers,
_
Thank you very much, I find out my errors.
first error, wrong php script
Code:
<?php
$response["response"] = array();
$result = array();
$result["server"] = $_POST['db_server'];
$result["user"] = $_POST['db_user'];
$result["password"] = $_POST['db_password'];
$result["database"] = $_POST['db_database'];
$result["message"] = $_POST['query_message'];
array_push($response["response"], $result);
echo json_encode($response);
?>
second, the request url is incorrect
Code:
QNetworkRequest request("http://127.0.0.1/bridge/general_query.php");
third, I don't need QUrl, QUrlQuery is enough for the task