2016-04-01 4 views
3

Ich verwende QNetworkRequest, um HTTPS-Anforderungen auszuführen. Ich möchte es debuggen und ALLE Inhalte des HTTP-Headers sehen, der von dieser Klasse erstellt wird, bevor sie an HTTPS-Server gesendet wird.So erhalten Sie rohe Byte-Daten des http-Headers für Anforderungen, die mit QNetworkRequest gesendet wurden

Bisher habe ich dies:

QString header_list; 
QList<QByteArray> headerList = request->rawHeaderList(); 
foreach(QByteArray head, headerList) 
    header_list += head + ": " + request->rawHeader(head) + "\n"; 

Dies führt zu einer Zeichenfolge, die alle Teile des Header enthält, die ich explizit setRawHeader gesetzt verwenden, aber es zeigt nicht die Werte, die von der Klasse Standard oder hinzugefügt sind selbst, ohne meine Intervention.

Normalerweise würde ich tcpdump verwenden, um zu sehen, was meine Anwendungen versucht, an den Server zu senden, aber es verwendet SSL, so kann ich nicht.

Ich würde wirklich gerne den "echten" Header sehen, der tatsächlich ausgeht, der aus irgendeinem Grund gut in der Klasse versteckt ist.

Gibt es eine einfache Möglichkeit, es abzurufen, damit ich sehen kann, welche http-Header meine Anwendung verwendet?

Antwort

3

Die HTTP-Header sind deep inside Qt-Netzwerkmodul festgelegt. Du kannst sie nicht bekommen. Standard-Header folgen:

Content-Length: 42 // if there is outgoing data 
Proxy-Connection: Keep-Alive // if there is http proxy 
Connection: Keep-Alive 
Accept-Encoding: gzip, deflate 
Accept-Language: ru-RU,en,* // depend on system locale 
User-Agent: Mozilla/5.0 
Host: www.google.com 
Content-Type: application/x-www-form-urlencoded // if there is outgoing data, depend on data type 
Verwandte Themen