QNetworkAccessManager/QNetworkReply с пользовательским QTcpSocket?

#qt #ssl #webkit #qnetworkaccessmanager

#qt #ssl #webkit #qnetworkaccessmanager

Вопрос:

Есть ли какой-либо способ заменить QSslSocket, используемый QNetworkAccessManager, моей собственной реализацией?

Я действительно с нетерпением ждал возможности использовать WebKit!!

Я работаю над присоединением реализации PKCS11 к нашему программному обеспечению на базе Qt.

Пока единственный способ, который я нашел, это использовать QHttp — но в документе сказано, что этот класс использовать не следует..

Пока я нахожу QNetworkAccessManager очень ограниченным. Да, это просто, но это не суть этого фреймворка.

???

Ответ №1:

Вы не можете прямо сейчас заменить QSslSocket внутри реализации HTTP. Единственное, что вы могли бы сделать, это переопределить createRrequest вашего QNAM и полностью переопределить реализацию HTTP.

Что именно нужно сделать, чтобы использовать PKCS11? Вам нужно было бы изменить какой-либо код в src / network /ssl /qsslsocket * и изменить SSLContext? Или уровень HTTP также нуждается в изменении?

Комментарии:

1. Я пришел к тому же выводу. Единственный способ переопределить QNetworkAccessManager / QNetworkReply, тогда внутри QNetworkReply можно использовать QHttp, и он предоставляет setSocket. Я не хочу исправлять Qt, поскольку я опытный пользователь бета-версий, слишком много головной боли для переноса изменений. Для всех, кто столкнется с такой же задачей -прочитайте этот пост: lists.trolltech.com/qt-interest/2008-11/thread00002-0.html Использование PKCS11: мне нужно использовать сертификат со смарт-карты для аутентификации сертификата клиента. Подкласса QSslSocket / QTcpSocket было бы достаточно, если QNetworkAccessManager предоставил бы API для его установки.