HTTP



  • Any One working on Http in Qt application i need a help ?
    how to send data on server using http protocol



  • @Pranit-Patil The QNetwork module, specifically the QNetworkAccessManager and the associated QNetworkRequest and QNetwork reply classes are what you need.



  • I am trying to send following data on "https://dev.datoms.io/api/trade/initialization/create_device"

    Data:
    //POST /api/trade/initialization/create_device HTTP/1.1
    //Host: dev.datoms.io
    //Cache-Control: no-cache
    //Postman-Token: 2f521ea3-8688-4fd2-b8f5-0fc7f3df62ba

    Real data {"user_token":"Ej14qoqnm9PxZJWXXHPIzX8L2owzQuIPHA0QewilGs8fzScwp6XoPnsQ4KUb71iv","qr_code":"QG0Z9Q5J","circuit_version":"","device_type":1}

    if i send data successfully i will get response from server .
    im trying to implement but not getting.
    Thank You.



  • Hi @Pranit-Patil
    For HTTP in Qt there is QtNetwork module. for that you have to inlcude
    QT += network in .pro file.

    after this you can add
    #include <QtNetwork> in your file.

    Then you can use functionalities of QtNetwork.

    Hierarchy of this is,

    QNetworkRequest request(QUrl(“http://example.com/exampleapi”));

    request.setHeader(QNetworkRequest::ContentTypeHeader, “application/xyz”);

    QNetworkAccessManager nam;

    QNetworkReply *reply = nam.post(request, QByteArray &data);

    while(!reply->isFinished())
    {
    qApp->processEvents();
    }
    QByteArray response_data = reply->readAll();

    reply->deleteLater();



  • For set header you can,

    • void QNetworkRequest::setRawHeader(const QByteArray & headerName, const QByteArray & headerValue);

    Sets the value of the known header header to be value, overriding any previously set headers.

    • void QNetworkRequest::setRawHeader(const QByteArray & headerName, const QByteArray & headerValue)

    Sets the header headerName to be of value headerValue. If headerName corresponds to a known header (see QNetworkRequest::KnownHeaders), the raw format will be parsed and the corresponding "cooked" header will be set as well.

    for example:
    request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));



  • I am trying following code but not getting error like-
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

    void MainWindow::on_pushButton_clicked()
    {
    QNetworkAccessManager * mgr = new QNetworkAccessManager(this); connect(mgr,SIGNAL(finished(QNetworkReply*)),this,SLOT(onfinish(QNetworkReply*)));
    connect(mgr,SIGNAL(finished(QNetworkReply*)),mgr,SLOT(deleteLater()));

    QByteArray postData =(" user_token":{"Ej14qoqnm9PxZJWXXHPIzX8L2owzQuIPHA0QewilGs8fzScwp6XoPnsQ4KUb71iv","qr_code":"}");
    QUrl serviceURL("https://dev.datoms.io/api/trade/initialization/create_device"); QNetworkRequest request(serviceURL);
    request.setRawHeader("Post", "/api/trade/initialization/create_device HTTP/1.1"); request.setRawHeader("Host:", "dev.datoms.io");
    request.setRawHeader("Cache-Control:","no-cache ");
    mgr->post(request, postData);
    }
    void MainWindow::onfinish(QNetworkReply *rep)
    {
    QByteArray bts = rep->readAll();
    ui->textBrowser->insertPlainText(bts);
    }



  • @Prince_0912 thanks for quick response .
    i will try to implement



  • @Prince_0912
    simply i implement
    in .cpp file
    void MainWindow::on_pushButton_clicked()
    {
    QNetworkRequest request(QUrl("https://dev.datoms.io/api/trade/initialization/create_device"));

    //request.setHeader(QNetworkRequest::ContentTypeHeader, "application/xyz");
    
    QNetworkAccessManager manager;
    QByteArray data =("user_token\":{\"Ej14qoqnm9PxZJWXXHPIzX8L2owzQuIPHA0QewilGs8fzScwp6XoPnsQ4KUb71iv\",\"qr_code\":\"QGt0Z9Q5J\",\"circuit_version\":\"1.0.0\",\"device_type\":1\"}");
    
    QNetworkReply *reply = manager.post(request, data);
    
    while(!reply->isFinished())
    {
    qApp->processEvents();
    }
    QByteArray response_data = reply->readAll();
    
    reply->deleteLater();
    

    }

    application Builded but not geeting any response from server
    i got this errors
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error



  • Hi @Pranit-Patil ,

    These error you can solve by this link .

    OR

    You can refer this link for implementing in another.



  • i m getting this type of issues-
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    "Unable to init SSL Context:

    i already installed OpenSSL 1.0.2e (32bit) but again same problem faced
    anyone knows help me

    Thank You.



  • At last, I found the solution. click on following link and download latest version of Win32 OpenSSL v1.1.0h note:Dont download light version ,download 30 MB file

    http://slproweb.com/products/Win32OpenSSL.html

    after installing OpenSSL opy the following three dll's in the the directory containing your binary file/Debug folder where your .exe file present.

    • libeay32.dll
    • libssl32.dll
    • ssleay32.dll

    I solved my problem this one



  • Ok finally you got solution. Now make this Topic to Mark as Solved.
    Go to right hand side of page -> click on Topic Tools -> Mark as Solved.
    Thank you.



  • @Prince_0912 Thank you for your guidlines


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.