c++ - Request JSON in Qt -
firstly before start post, whant tell read topic
correct format http post using qnetworkrequest
i using idea me not working. read few other topic time not have solve. may therefore because somethig missed (for sure).
now show request work html file
<html> <body> <form method="post" action="http://192.168.1.108/acces.cgi"> <input type="text" name="json" value='{"method":{"ok":"get","number":1}}' size="100"> <input type="submit"> </form> </body> </html>
after send request answer in browser. request json correct sure.
now whant try send same request using qt have written below code warring
qt.network.ssl: qsslsocket: cannot resolve sslv2_client_method qt.network.ssl: qsslsocket: cannot resolve sslv2_server_method
and code
qurl url("http://192.168.1.108/acces.cgi"); // request local host qnetworkrequest *request = new qnetworkrequest(url); request>setheader(qnetworkrequest::contenttypeheader,"application/json"); manager = new qnetworkaccessmanager(); qobject::connect(manager,signal(finished(qnetworkreply*)),this,slot(handleddatafromnetwork(qnetworkreply*))); // prepare json string qbytearray array= "{\"method\":{\"ok\":\"get\",\"number\":\"1\"}}"; // , send reply = manager->post(*request, array); // next wait signal , try recive in slot void myclass::handleddatafromnetwork(qnetworkreply *reply) { qdebug() << "content" << reply->readall(); }
but expect warrning not nothing more.
ps. sorry how looks code in qt not can correct preper better
edit: solved !!!
answer using qurlquery class. code should looks below:
qurl url("http://192.168.1.109/ask.cgi"); qurlquery query; query.setquery("json={\"ctrl\":{\"c":\"gd\",\"i\":6}}"); url.setquery(query); qnetworkrequest req(url); qnetworkaccessmanager test; qeventloop loop; connect(&test, signal(finished(qnetworkreply*)), &loop, slot(quit())); qnetworkreply * reply = test.get(req); loop.exec();
:)
this error:
qt.network.ssl: qsslsocket: cannot resolve sslv2_client_method
is because qt can't find openssl. if you're on windows, you'll have openssl binaries , put them in same folder executable. if you're on linux, install openssl through package manager (apt-get install openssl
debian-based systems).
also, if you're sending json data, @ qts json support, make easier send/parse json data.
Comments
Post a Comment