Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QNetworkReply: How to get request (NOT response) header information



  • Hi,
    so far I was able to get the response Headers from a request send from a QNetworkAccessManager but Iam also interested in the request header which is send to the server but I am not able to get it.

    To get the response header I connected to the finished slot and when look into the QNetworkReply object.

    void harbinger::replyFinished(QNetworkReply * response)
     {
    //set status code
    ui.statusCodeEdit->setText(response->attribute(QNetworkRequest::Attribute::HttpStatusCodeAttribute).toString() + " - " + (response->attribute(QNetworkRequest::Attribute::HttpReasonPhraseAttribute).toString()));
    
    QList<QByteArray> headerlist = response->rawHeaderList();
    QByteArray header;
    
    for (auto it = headerlist.cbegin(); it != headerlist.cend(); ++it)
    {
    	header = response->rawHeader(*it);
    	QString test = "<b>" + *it + ": " + "</b>" + header;
    	ui.responseHeaderEdit->append(test);
    }
    }
    

    I tried following things to get the request header:

    1. I tried to look into the object that is returned bei QNetworkAccessManager::get() which has completely no header information
    2. I connected to the readyRead() signal which only gives me the header infos from the response
    3. I connected to the metaDataChanged() signal but I also get the response header
    4. I also looked into the constructed QNetworkRequest object before it was passed to the QNetworkAccessManager::get function but this was also empty.
    5. I tried also to look into the QNetworkRequest object that is in the QNetworkReply when the finished slot is invoked but where was also no request header information.

    How can I get the header information which QNetworkAccessManager send to the server?
    If I look into wireshark I see that per default the QNetworkAccessManager sends header information even if none are set by myself but Iam not able to get the information.

    On which point do I have to put my "Net" to get the info?

    Edit: Ok, I tested what happens if I manually add header to the request and looked into the request object in QNetworkAccesManager::get scope and in finished() scope and I was able to retrieve header information but only the ones that I put in but if I look to wireshark I see more header information.

    e.g.:
    GET /myurl/!/about HTTP/1.1 <-- protocol info
    Conenction: Keep-Alive
    Accept-Encoding: gzip, deflate
    Accept-Language- de-de, en.*
    User-Agent: Mozilla/5.0 <-- ? is it internally a mozilla engine?
    Host: blablubb:1080

    I see this information in wireshark so it must be coming from the QNetworkAccessManager?

    Regards
    Revi


Log in to reply