QNetworkAccessManager Class

QNetworkAccessManager 클래스를 사용하면 애플리케이션이 네트워크 요청을 보내고 응답을 받을 수 있습니다. 더 보기...

헤더: #include <QNetworkAccessManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
상속합니다: QObject

참고: 이 클래스의 모든 함수는 재인용됩니다.

공용 유형

enum Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation }

공용 함수

QNetworkAccessManager(QObject *parent = nullptr)
virtual ~QNetworkAccessManager()
void addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)
bool autoDeleteReplies() const
QAbstractNetworkCache *cache() const
void clearAccessCache()
void clearConnectionCache()
void connectToHost(const QString &hostName, quint16 port = 80)
void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
void connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
QNetworkCookieJar *cookieJar() const
QNetworkReply *deleteResource(const QNetworkRequest &request)
void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())
QNetworkReply *get(const QNetworkRequest &request)
(since 6.7) QNetworkReply *get(const QNetworkRequest &request, QIODevice *data)
(since 6.7) QNetworkReply *get(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply *head(const QNetworkRequest &request)
bool isStrictTransportSecurityEnabled() const
bool isStrictTransportSecurityStoreEnabled() const
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data)
(since 6.8) QNetworkReply *post(const QNetworkRequest &request, std::nullptr_t nptr)
QNetworkProxy proxy() const
QNetworkProxyFactory *proxyFactory() const
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data)
(since 6.8) QNetworkReply *put(const QNetworkRequest &request, std::nullptr_t nptr)
QNetworkRequest::RedirectPolicy redirectPolicy() const
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
void setAutoDeleteReplies(bool shouldAutoDelete)
void setCache(QAbstractNetworkCache *cache)
void setCookieJar(QNetworkCookieJar *cookieJar)
void setProxy(const QNetworkProxy &proxy)
void setProxyFactory(QNetworkProxyFactory *factory)
void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
void setStrictTransportSecurityEnabled(bool enabled)
void setTransferTimeout(int timeout)
(since 6.7) void setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)
QList<QHstsPolicy> strictTransportSecurityHosts() const
virtual QStringList supportedSchemes() const
int transferTimeout() const
(since 6.7) std::chrono::milliseconds transferTimeoutAsDuration() const

Signals

void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
void encrypted(QNetworkReply *reply)
void finished(QNetworkReply *reply)
void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

보호 함수

virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

상세 설명

네트워크 액세스 API는 전송하는 요청에 대한 공통 구성 및 설정을 보유하는 하나의 QNetworkAccessManager 객체를 중심으로 구성됩니다. 여기에는 프록시 및 캐시 구성은 물론 이러한 문제와 관련된 신호와 네트워크 작업의 진행 상황을 모니터링하는 데 사용할 수 있는 응답 신호가 포함되어 있습니다. 하나의 QNetworkAccessManager 인스턴스는 전체 Qt 애플리케이션에 충분합니다. QNetworkAccessManager는 QObject 을 기반으로 하기 때문에, 그것이 속한 스레드에서만 사용할 수 있습니다.

QNetworkAccessManager 객체가 생성되면 응용 프로그램은 이를 사용하여 네트워크를 통해 요청을 보낼 수 있습니다. 요청과 선택적 데이터를 받는 표준 함수 그룹이 제공되며, 각각 QNetworkReply 객체를 반환합니다. 반환된 객체는 해당 요청에 대한 응답으로 반환된 모든 데이터를 가져오는 데 사용됩니다.

네트워크에서 간단한 다운로드를 수행할 수 있습니다:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, &QNetworkAccessManager::finished,
        this, &MyClass::replyFinished);

manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

QNetworkAccessManager에는 비동기 API가 있습니다. 위의 replyFinished 슬롯이 호출되면 다운로드한 데이터와 메타데이터(헤더 등)를 포함하는 QNetworkReply 객체가 매개변수로 사용됩니다.

참고: 요청이 완료된 후 적절한 시점에 QNetworkReply 객체를 삭제하는 것은 사용자의 책임입니다. finished ()에 연결된 슬롯 내에서 직접 삭제하지 마세요. deleteLater () 함수를 사용할 수 있습니다.

참고: QNetworkAccessManager는 수신한 요청을 대기열에 넣습니다. 병렬로 실행되는 요청의 수는 프로토콜에 따라 다릅니다. 현재 데스크톱 플랫폼의 HTTP 프로토콜의 경우 하나의 호스트/포트 조합에 대해 6개의 요청이 병렬로 실행됩니다.

관리자가 이미 존재한다고 가정하면 좀 더 복잡한 예가 될 수 있습니다:

QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead);
connect(reply, &QNetworkReply::errorOccurred,
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

QNetworkRequest, QNetworkReply, QNetworkProxy참조하세요 .

멤버 유형 문서

enum QNetworkAccessManager::Operation

이 응답이 처리 중인 작업을 나타냅니다.

상수설명
QNetworkAccessManager::HeadOperation1헤더 검색 작업( head()으로 생성)
QNetworkAccessManager::GetOperation2헤더 검색 및 콘텐츠 다운로드 작업( get()으로 생성)
QNetworkAccessManager::PutOperation3콘텐츠 업로드 작업( put()으로 생성)
QNetworkAccessManager::PostOperation4처리할 HTML 양식의 내용을 HTTP POST를 통해 전송 ( post() 로 생성)
QNetworkAccessManager::DeleteOperation5콘텐츠 삭제 작업( deleteResource()으로 생성)
QNetworkAccessManager::CustomOperation6사용자 정의 작업( sendCustomRequest()으로 생성)

QNetworkReply::operation()도 참조하세요 .

멤버 함수 문서

[explicit] QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)

네트워크 액세스 API의 중심이 되는 QNetworkAccessManager 객체를 구성하고 parent 을 부모 객체로 설정합니다.

[virtual noexcept] QNetworkAccessManager::~QNetworkAccessManager()

QNetworkAccessManager 객체를 삭제하고 모든 리소스를 해제합니다. 이 클래스에서 반환되는 QNetworkReply 객체는 이 객체를 부모로 설정하므로 QObject::setParent()를 호출하지 않으면 함께 삭제된다는 점에 유의하세요.

void QNetworkAccessManager::addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)

knownHosts 에는 QHstsPolicy 정보가 있는 알려진 호스트가 포함되어 있습니다.

참고: 만료된 정책은 이전에 존재하는 경우 캐시에서 알려진 호스트를 제거합니다.

참고: HTTP 응답을 처리하는 동안 QNetworkAccessManager 은 HSTS 캐시를 업데이트하여 종료 정책을 제거 또는 업데이트하거나 새로운 knownHosts 을 도입할 수도 있습니다. 따라서 현재 구현은 서버 중심이며, 클라이언트 코드는 QNetworkAccessManager 에 이전에 알려지거나 발견된 정책을 제공할 수 있지만 이 정보는 "Strict-Transport-Security" 응답 헤더로 재정의할 수 있습니다.

추가StrictTransportSecurityHosts(), enableStrictTransportSecurityStore() 및 QHstsPolicy도 참조하세요 .

[signal] void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)

이 신호는 최종 서버가 요청된 콘텐츠를 전달하기 전에 인증을 요청할 때마다 전송됩니다. 이 신호에 연결된 슬롯은 authenticator 객체에서 콘텐츠에 대한 자격 증명( reply 객체를 검사하여 확인할 수 있음)을 채워야 합니다.

QNetworkAccessManager 는 자격 증명을 내부적으로 캐시하고 서버에서 다시 인증이 필요한 경우 authenticationRequired() 신호를 보내지 않고 동일한 값을 전송합니다. 자격 증명을 거부하면 이 신호가 다시 전송됩니다.

참고: 요청이 자격 증명을 보내지 않도록 하려면 authenticator 객체에서 setUser() 또는 setPassword()를 호출하지 않아야 합니다. 그러면 finished() 신호가 AuthenticationRequiredError 오류와 함께 QNetworkReply 으로 전송됩니다.

참고: 신호가 반환될 때 인증자가 새 정보로 채워지지 않으면 연결이 실패하므로 이 신호에 연결하기 위해 QueuedConnection을 사용할 수 없습니다.

proxyAuthenticationRequired(), QAuthenticator::setUser() 및 QAuthenticator::setPassword()도 참조하세요 .

bool QNetworkAccessManager::autoDeleteReplies() const

QNetworkAccessManager 이 현재 QNetworkReplies를 자동으로 삭제하도록 구성되어 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

setAutoDeleteRepliesQNetworkRequest::AutoDeleteReplyOnFinishAttribute참조하세요 .

QAbstractNetworkCache *QNetworkAccessManager::cache() const

네트워크에서 가져온 데이터를 저장하는 데 사용되는 캐시를 반환합니다.

setCache()도 참조하세요 .

void QNetworkAccessManager::clearAccessCache()

인증 데이터 및 네트워크 연결의 내부 캐시를 플러시합니다.

이 기능은 자동 테스트를 수행할 때 유용합니다.

clearConnectionCache()도 참조하세요 .

void QNetworkAccessManager::clearConnectionCache()

네트워크 연결의 내부 캐시를 플러시합니다. clearAccessCache ()와 달리 인증 데이터는 보존됩니다.

clearAccessCache()도 참조하세요 .

void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)

포트 port 에서 hostName 이 지정한 호스트에 대한 연결을 시작합니다. 이 함수는 HTTP 요청이 이루어지기 전에 호스트에 대한 TCP 핸드셰이크를 완료하여 네트워크 지연 시간을 줄이는 데 유용합니다.

참고: 이 함수는 오류를 보고할 수 없습니다.

connectToHostEncrypted(), get(), post(), put() 및 deleteResource()도 참조하세요 .

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())

port 포트에서 sslConfiguration 를 사용하여 hostName 에서 제공한 호스트에 대한 연결을 시작합니다. 이 함수는 HTTPS 요청이 이루어지기 전에 호스트에 대한 TCP 및 SSL 핸드셰이크를 완료하여 네트워크 지연 시간을 줄이는 데 유용합니다.

참고: 허용된 프로토콜 목록에 QSslConfiguration::ALPNProtocolHTTP2 이 포함된 sslConfiguration 에서 setAllowedNextProtocols()를 호출하여 HTTP/2 연결을 미리 연결할 수 있습니다. HTTP/2를 사용하는 경우 호스트당 하나의 연결로 충분하며, 즉 호스트당 이 메서드를 여러 번 호출해도 네트워크 트랜잭션 속도가 빨라지지 않습니다.

참고: 이 함수는 오류를 보고할 수 없습니다.

connectToHost(), get(), post(), put(), deleteResource()도 참조하세요 .

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)

이것은 오버로드된 함수입니다.

port 포트에서 sslConfiguration 를 사용하여 hostName 에서 지정한 호스트에 대한 연결을 시작하고 peerName 을 인증서 유효성 검사에 사용되는 호스트 이름으로 설정합니다. 이 함수는 HTTPS 요청을 하기 전에 호스트에 대한 TCP 및 SSL 핸드셰이크를 완료하여 네트워크 대기 시간을 낮추는 데 유용합니다.

참고: 허용된 프로토콜 목록에 QSslConfiguration::ALPNProtocolHTTP2 을 포함하여 sslConfiguration 에서 setAllowedNextProtocols()를 호출하여 HTTP/2 연결을 미리 연결할 수 있습니다. HTTP/2를 사용하는 경우 호스트당 하나의 연결로 충분하며, 즉 호스트당 이 메서드를 여러 번 호출해도 네트워크 트랜잭션 속도가 빨라지지 않습니다.

참고: 이 함수는 오류를 보고할 수 없습니다.

connectToHost(), get(), post(), put(), deleteResource()도 참조하세요 .

QNetworkCookieJar *QNetworkAccessManager::cookieJar() const

네트워크에서 얻은 쿠키와 곧 전송될 쿠키를 저장하는 데 사용되는 QNetworkCookieJar 을 반환합니다.

setCookieJar()도 참조하세요 .

[virtual protected] QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

op 작업과 originalReq 요청을 처리하기 위해 새 QNetworkReply 객체를 반환합니다. Get 및 Head 요청의 경우 outgoingData 장치는 항상 0이지만, 해당 작업에서 post() 및 put()에 전달되는 값입니다( QByteArray 변형은 QBuffer 객체를 전달합니다).

기본 구현은 setCookieJar()로 설정된 쿠키 항아리에서 QNetworkCookieJar::cookiesForUrl()를 호출하여 원격 서버로 전송할 쿠키를 가져옵니다.

반환된 객체는 열린 상태여야 합니다.

QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)

request 의 URL로 식별되는 리소스를 삭제하라는 요청을 보냅니다.

참고: 이 기능은 현재 HTTP에서만 사용할 수 있으며 HTTP DELETE 요청을 수행합니다.

get(), post(), put() 및 sendCustomRequest()도 참조하세요 .

void QNetworkAccessManager::enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())

enabledtrue 인 경우 내부 HSTS 캐시는 영구 저장소를 사용하여 HSTS 정책을 읽고 씁니다. storeDir 은 이 저장소가 위치할 위치를 정의합니다. 기본 위치는 QStandardPaths::CacheLocation 에 의해 정의됩니다. 쓰기 가능한 QStandartPaths::CacheLocation이 없고 storeDir 이 빈 문자열인 경우, 저장소는 프로그램의 작업 디렉터리에 위치합니다.

참고: 영구 저장소를 활성화할 때 HSTS 캐시에 이미 HSTS 정책이 포함되어 있으면 이러한 정책은 저장소에 보존됩니다. 캐시와 스토어에 모두 동일한 알려진 호스트가 포함되어 있는 경우 캐시의 정책이 더 최신으로 간주되므로 스토어의 이전 값을 덮어씁니다(따라서 스토어에서 이전 값을 덮어쓰게 됩니다). 이 동작을 원하지 않는 경우 엄격한 전송 보안을 활성화하기 전에 HSTS 저장소를 활성화하세요. 기본적으로 HSTS 정책의 영구 저장소는 비활성화되어 있습니다.

isStrictTransportSecurityStoreEnabled(), setStrictTransportSecurityEnabled() 및 QStandardPaths::standardLocations()도 참조하세요 .

[signal] void QNetworkAccessManager::encrypted(QNetworkReply *reply)

이 신호는 SSL/TLS 세션이 초기 핸드셰이크를 성공적으로 완료했을 때 발생합니다. 이 시점에서는 사용자 데이터가 전송되지 않았습니다. 이 신호는 웹사이트의 인증서가 변경되었을 때 사용자에게 알리는 등 인증서 체인에 대한 추가 확인을 수행하는 데 사용할 수 있습니다. reply 매개 변수는 책임이 있는 네트워크 회신을 지정합니다. 응답이 예상 기준과 일치하지 않으면 이 신호에 연결된 슬롯에서 QNetworkReply::abort()를 호출하여 응답을 중단해야 합니다. 사용 중인 SSL 구성은 QNetworkReply::sslConfiguration() 메서드를 사용하여 검사할 수 있습니다.

내부적으로 QNetworkAccessManager 은 요청을 병렬로 처리할 수 있도록 서버에 대한 여러 연결을 열 수 있습니다. 이러한 연결은 재사용될 수 있으며, 이는 암호화된() 신호가 전송되지 않음을 의미합니다. 즉, QNetworkAccessManager 의 수명 기간 동안 사이트에 대한 첫 번째 연결에 대해서만 이 신호를 수신할 수 있습니다.

QSslSocket::encrypted() 및 QNetworkReply::encrypted()도 참조하세요 .

[signal] void QNetworkAccessManager::finished(QNetworkReply *reply)

이 신호는 대기 중인 네트워크 응답이 완료될 때마다 전송됩니다. reply 매개변수에는 방금 완료된 회신에 대한 포인터가 포함됩니다. 이 신호는 QNetworkReply::finished() 신호와 함께 전송됩니다.

개체의 상태에 대한 자세한 내용은 QNetworkReply::finished()를 참조하세요.

참고: 이 신호에 연결된 슬롯의 reply 개체를 삭제하지 마세요. deleteLater ()를 사용합니다.

QNetworkReply::finished() 및 QNetworkReply::error()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)

대상 request 의 콘텐츠를 가져오기 위한 요청을 게시하고 새 데이터가 도착할 때마다 readyRead() 신호를 보내는 읽기용으로 열린 새 QNetworkReply 객체를 반환합니다.

콘텐츠와 관련 헤더가 다운로드됩니다.

post(), put(), deleteResource() 및 sendCustomRequest()도 참조하세요 .

[since 6.7] QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, QIODevice *data)

이 함수는 오버로드된 함수입니다.

참고: 메시지 본문이 포함된 GET 요청은 캐시되지 않습니다.

참고: 요청이 리디렉션되는 경우, 상태 코드가 307 또는 308인 경우에만 메시지 본문이 유지됩니다.

이 함수는 Qt 6.7에 도입되었습니다.

[since 6.7] QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, const QByteArray &data)

이 함수는 오버로드된 함수입니다.

참고: 메시지 본문이 포함된 GET 요청은 캐시되지 않습니다.

참고: 요청이 리디렉션되는 경우, 상태 코드가 307 또는 308인 경우에만 메시지 본문이 유지됩니다.

이 함수는 Qt 6.7에 도입되었습니다.

request 에 대한 네트워크 헤더를 가져오기 위한 요청을 게시하고 해당 헤더가 포함된 새 QNetworkReply 객체를 반환합니다.

이 함수의 이름은 연결된 HTTP 요청(HEAD)의 이름을 따서 지었습니다.

bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const

HTTP 엄격한 전송 보안(HSTS)이 활성화된 경우 true를 반환합니다. 기본적으로 HSTS는 비활성화되어 있습니다.

setStrictTransportSecurityEnabled()도 참조하세요 .

bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const

HSTS 캐시가 영구 저장소를 사용하여 HSTS 정책을 로드하고 저장하는 경우 true를 반환합니다.

enableStrictTransportSecurityStore()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)

request 에 지정된 대상에 HTTP POST 요청을 보내고 서버에서 보낸 응답을 포함하는 읽기용으로 열린 새 QNetworkReply 객체를 반환합니다. data 디바이스의 콘텐츠가 서버에 업로드됩니다.

data 읽기 위해 열려 있어야 하며 이 응답에 대해 finished() 신호가 전송될 때까지 유효한 상태를 유지해야 합니다.

참고: HTTP 및 HTTPS 이외의 프로토콜로 POST 요청을 보내는 것은 정의되지 않았으며 실패할 가능성이 높습니다.

get(), put(), deleteResource() 및 sendCustomRequest()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)

이 함수는 과부하된 함수입니다.

multiPart 메시지의 내용을 request 으로 지정된 대상에게 보냅니다.

HTTP를 통해 MIME 멀티파트 메시지를 보낼 때 사용할 수 있습니다.

QHttpMultiPart, QHttpPart, put()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)

이 함수는 오버로드된 함수입니다.

data 바이트 배열의 내용을 request 에 지정된 대상으로 보냅니다.

[since 6.8] QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, std::nullptr_t nptr)

이 함수는 오버로드된 함수입니다.

request 에 지정된 POST 요청을 본문 없이 전송하고 새 QNetworkReply 객체를 반환합니다.

이 함수는 Qt 6.8에 도입되었습니다.

[signal] void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)

이 신호는 SSL/TLS 핸드셰이크가 PSK 암호모음을 협상하는 경우 발생하며, 따라서 PSK 인증이 필요합니다. reply 객체는 이러한 암호 스위트를 협상하는 QNetworkReply 입니다.

PSK를 사용할 때 클라이언트는 유효한 ID와 유효한 사전 공유 키를 서버에 보내야 SSL 핸드셰이크를 계속할 수 있습니다. 애플리케이션은 필요에 따라 전달된 authenticator 객체를 채워 이 신호에 연결된 슬롯에 이 정보를 제공할 수 있습니다.

참고: 이 신호를 무시하거나 필요한 자격 증명을 제공하지 않으면 핸드셰이크가 실패하여 연결이 중단됩니다.

참고: authenticator 개체는 응답자가 소유하며 애플리케이션에서 삭제해서는 안 됩니다.

QSslPreSharedKeyAuthenticator도 참조하세요 .

QNetworkProxy QNetworkAccessManager::proxy() const

QNetworkAccessManager 객체를 사용하여 전송된 요청이 사용할 QNetworkProxy 을 반환합니다. 프록시의 기본값은 QNetworkProxy::DefaultProxy 입니다.

setProxy(), setProxyFactory() 및 proxyAuthenticationRequired()도 참조하세요 .

[signal] void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)

이 신호는 프록시가 인증을 요청하고 QNetworkAccessManager 에서 캐시된 유효한 자격 증명을 찾을 수 없을 때마다 전송됩니다. 이 신호에 연결된 슬롯은 authenticator 객체에서 proxy 프록시에 대한 자격 증명을 입력해야 합니다.

QNetworkAccessManager 는 내부적으로 자격 증명을 캐시합니다. 다음에 프록시가 인증을 요청할 때 QNetworkAccessManager 는 proxyAuthenticationRequired 신호를 다시 보내지 않고 자동으로 동일한 자격 증명을 보냅니다.

프록시가 자격 증명을 거부하면 QNetworkAccessManager 에서 다시 신호를 보냅니다.

proxy(), setProxy() 및 authenticationRequired()도 참조하세요 .

QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const

QNetworkAccessManager 객체가 요청에 사용할 프록시를 결정하는 데 사용하는 프록시 팩토리를 반환합니다.

이 함수가 반환하는 포인터는 QNetworkAccessManager 에서 관리하며 언제든지 삭제할 수 있습니다.

setProxyFactory() 및 proxy()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)

data 의 내용을 대상 request 으로 업로드하고 답장을 위해 열릴 새 QNetworkReply 객체를 반환합니다.

data 이 함수가 호출될 때 읽을 수 있도록 열려 있어야 하며 이 응답에 대해 finished() 신호가 전송될 때까지 유효한 상태를 유지해야 합니다.

반환된 객체에서 읽을 수 있는 항목이 있는지 여부는 프로토콜에 따라 다릅니다. HTTP의 경우 서버는 업로드가 성공했음을 나타내는 작은 HTML 페이지를 전송할 수 있습니다. 다른 프로토콜의 경우 응답에 콘텐츠가 포함될 수 있습니다.

참고: HTTP의 경우 이 요청은 대부분의 서버가 허용하지 않는 PUT 요청을 전송합니다. HTML 양식을 통한 파일 업로드를 포함한 양식 업로드 메커니즘은 POST 메커니즘을 사용합니다.

get(), post(), deleteResource() 및 sendCustomRequest()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)

이 함수는 과부하된 함수입니다.

multiPart 메시지의 내용을 request 으로 지정된 대상에게 보냅니다.

HTTP를 통해 MIME 멀티파트 메시지를 보내는 데 사용할 수 있습니다.

QHttpMultiPart, QHttpPart, post()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)

이 함수는 오버로드된 함수입니다.

data 바이트 배열의 내용을 request 에 지정된 대상으로 보냅니다.

[since 6.8] QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, std::nullptr_t nptr)

이 함수는 오버로드된 함수입니다.

request 에 지정된 PUT 요청을 본문 없이 전송하고 새 QNetworkReply 객체를 반환합니다.

이 함수는 Qt 6.8에 도입되었습니다.

QNetworkRequest::RedirectPolicy QNetworkAccessManager::redirectPolicy() const

새 요청을 생성할 때 사용되는 리디렉션 정책을 반환합니다.

setRedirectPolicy() 및 QNetworkRequest::RedirectPolicy참조하세요 .

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)

request 의 URL로 식별되는 서버로 사용자 지정 요청을 보냅니다.

HTTP 사양에 따라 유효한 verb 을 서버로 보내는 것은 사용자의 책임입니다.

이 방법은 get() 또는 post() 등을 통해 제공되는 일반적인 동사 이외의 동사(예: HTTP OPTIONS 명령 전송)를 전송할 수 있는 수단을 제공합니다.

data 이 비어 있지 않으면 data 디바이스의 콘텐츠가 서버에 업로드되며, 이 경우 데이터는 읽기를 위해 열려 있어야 하고 이 응답에 대해 finished() 신호가 전송될 때까지 유효 상태를 유지해야 합니다.

참고: 이 기능은 현재 HTTP(S)에서만 사용할 수 있습니다.

get(), post(), put() 및 deleteResource()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)

이 함수는 과부하된 함수입니다.

request 의 URL로 식별되는 서버로 사용자 지정 요청을 보냅니다.

multiPart 메시지의 내용을 request 으로 지정된 대상에게 보냅니다.

사용자 정의 동사에 대한 MIME 멀티파트 메시지를 보내는 데 사용할 수 있습니다.

QHttpMultiPart, QHttpPart, put()도 참조하세요 .

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)

이 함수는 오버로드된 함수입니다.

data 바이트 배열의 내용을 request 에 지정된 대상으로 보냅니다.

void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)

QNetworkReplies 의 자동 삭제를 활성화 또는 비활성화합니다.

shouldAutoDelete 를 true로 설정하는 것은 QNetworkRequest::AutoDeleteReplyOnFinishAttribute 속성이 이미 QNetworkRequest 에 명시적으로 설정되어 있지 않는 한 향후 QNetworkAccessManager 의 이 인스턴스로 전달되는 모든 QNetworkRequests 에 대해 속성을 true로 설정하는 것과 동일합니다.

autoDeleteRepliesQNetworkRequest::AutoDeleteReplyOnFinishAttribute도 참조하십시오 .

void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)

매니저의 네트워크 캐시를 cache 지정한 곳으로 설정합니다. 이 캐시는 매니저가 발송하는 모든 요청에 사용됩니다.

이 함수를 사용하여 쿠키를 영구 저장소에 저장하는 등의 추가 기능을 구현하는 클래스로 네트워크 캐시 객체를 설정할 수 있습니다.

참고: QNetworkAccessManagercache 객체의 소유권을 가집니다.

QNetworkAccessManager 기본적으로 캐시가 설정되어 있지 않습니다. Qt는 간단한 디스크 캐시인 QNetworkDiskCache 를 제공합니다.

cache() 및 QNetworkRequest::CacheLoadControl참조하십시오 .

void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)

관리자의 쿠키 항아리를 cookieJar 지정한 쿠키 항아리로 설정합니다. 쿠키 항아리는 관리자가 발송하는 모든 요청에 사용됩니다.

쿠키를 영구 저장소에 저장하는 등의 추가 기능을 구현하는 클래스로 쿠키 저장소 객체를 설정하려면 이 함수를 사용합니다.

참고: QNetworkAccessManagercookieJar 객체의 소유권을 가집니다.

cookieJarQNetworkAccessManager 과 같은 스레드에 있는 경우 cookieJar 의 부모를 설정하여 이 객체가 삭제될 때 쿠키 항아리도 삭제되도록 합니다. 서로 다른 QNetworkAccessManager 객체 간에 쿠키 항아리를 공유하려는 경우 이 함수를 호출한 후 쿠키 항아리의 부모를 0으로 설정할 수 있습니다.

QNetworkAccessManager 기본적으로 자체 쿠키 정책을 구현하지 않습니다. 잘 형성되고 최소한의 보안 요구 사항(쿠키 도메인이 요청과 일치하고 쿠키 경로가 요청과 일치)을 충족하는 한 서버에서 전송한 모든 쿠키를 허용합니다. 자체 보안 정책을 구현하려면 QNetworkCookieJar::cookiesForUrl() 및 QNetworkCookieJar::setCookiesFromUrl() 가상 함수를 재정의하세요. 이러한 함수는 새 쿠키가 감지되면 QNetworkAccessManager 에서 호출됩니다.

cookieJar(), QNetworkCookieJar::cookiesForUrl(), QNetworkCookieJar::setCookiesFromUrl()도 참조하세요 .

void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)

향후 요청에 사용할 프록시를 proxy 으로 설정합니다. 이미 전송된 요청에는 영향을 미치지 않습니다. 프록시가 인증을 요청하면 proxyAuthenticationRequired() 신호가 전송됩니다.

이 함수로 설정된 프록시는 QNetworkAccessManager 에서 발행하는 모든 요청에 사용됩니다. 경우에 따라 전송되는 요청의 유형이나 대상 호스트에 따라 다른 프록시를 선택해야 할 수도 있습니다. 이 경우 setProxyFactory() 사용을 고려해야 합니다.

proxy() 및 proxyAuthenticationRequired()도 참조하세요 .

void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)

이 클래스의 프록시 팩토리를 factory 로 설정합니다. 프록시 팩토리는 모든 요청에 동일한 프록시 값을 사용하는 대신 주어진 요청에 사용할 보다 구체적인 프록시 목록을 결정하는 데 사용됩니다.

QNetworkAccessManager 에서 보낸 모든 쿼리의 타입은 QNetworkProxyQuery::UrlRequest 입니다.

예를 들어 프록시 팩토리는 다음 규칙을 적용할 수 있습니다:

  • 대상 주소가 로컬 네트워크에 있는 경우(예: 호스트 이름에 점이 없거나 조직의 범위 내에 있는 IP 주소인 경우) 다음을 반환합니다. QNetworkProxy::NoProxy
  • 요청이 FTP인 경우 FTP 프록시를 반환합니다.
  • 요청이 HTTP 또는 HTTPS이면 HTTP 프록시를 반환합니다.
  • 그렇지 않으면 SOCKSv5 프록시 서버를 반환합니다.

factory 개체의 수명은 QNetworkAccessManager 에서 관리합니다. 이 서버는 필요한 경우 객체를 삭제합니다.

참고: 특정 프록시가 setProxy()로 설정된 경우 팩토리는 사용되지 않습니다.

proxyFactory(), setProxy() 및 QNetworkProxyQuery참조하세요 .

void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)

관리자의 리디렉션 정책을 policy 지정으로 설정합니다. 이 정책은 관리자가 만든 모든 후속 요청에 영향을 미칩니다.

이 함수를 사용하여 관리자 수준에서 HTTP 리디렉션을 활성화 또는 비활성화할 수 있습니다.

참고: 요청을 생성할 때 QNetworkRequest::RedirectAttributePolicy의 우선순위가 가장 높고, 그 다음 우선순위는 매니저의 정책입니다.

기본값은 QNetworkRequest::NoLessSafeRedirectPolicy 입니다. 수동 리디렉션 처리를 사용하는 클라이언트는 코드에서 이 정책을 명시적으로 설정하는 것이 좋습니다.

redirectPolicy() 및 QNetworkRequest::RedirectPolicy참조하세요 .

void QNetworkAccessManager::setStrictTransportSecurityEnabled(bool enabled)

enabledtrue 인 경우 QNetworkAccessManager 는 HTTP 엄격한 전송 보안 정책(HSTS, RFC6797)을 따릅니다. 요청을 처리할 때 QNetworkAccessManager 은 자동으로 "http" 스키마를 "https"로 바꾸고 HSTS 호스트에 보안 전송을 사용합니다. 명시적으로 설정된 경우 포트 80은 포트 443으로 대체됩니다.

HSTS를 사용 설정하면 보안 전송을 통해 수신되는 HSTS 헤더가 포함된 각 HTTP 응답에 대해 QNetworkAccessManager 은 유효한 정책을 가진 호스트를 기억하거나 만료되었거나 비활성화된 HSTS 정책을 가진 호스트를 제거하여 HSTS 캐시를 업데이트합니다.

isStrictTransportSecurityEnabled()도 참조하세요 .

void QNetworkAccessManager::setTransferTimeout(int timeout)

timeout 을 밀리초 단위의 전송 시간 초과로 설정합니다.

setTransferTimeout(표준::크로노::밀리초), transferTimeout() 및 transferTimeoutAsDuration()도 참조하세요 .

[since 6.7] void QNetworkAccessManager::setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)

데이터가 교환되지 않으면 전송을 중단하는 시간 제한( duration )을 설정합니다.

타임아웃이 만료되기 전에 전송된 바이트가 없으면 전송이 중단됩니다. 0은 타이머가 설정되지 않았음을 의미합니다. 인수가 제공되지 않으면 타임아웃은 QNetworkRequest::DefaultTransferTimeout 입니다. 이 함수를 호출하지 않으면 타임아웃이 비활성화되고 값은 0이 됩니다. 실행되는 요청에 대해 설정된 요청별 0이 아닌 시간 제한이 이 값을 재정의합니다. 즉, QNetworkAccessManager 에 타임아웃이 활성화된 경우 타임아웃 없이 요청을 실행하려면 이 함수를 비활성화해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

transferTimeoutAsDuration()도 참조하세요 .

[signal] void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

이 신호는 설정 중에 인증서 확인 오류를 포함하여 SSL/TLS 세션에 오류가 발생한 경우 발생합니다. errors 매개변수에는 오류 목록이 포함되며 reply 은 이러한 오류가 발생한 QNetworkReply 입니다.

오류가 치명적이지 않고 연결이 계속되어야 함을 나타내려면 이 신호에 연결된 슬롯에서 QNetworkReply::ignoreSslErrors() 함수를 호출해야 합니다. 이 함수가 호출되지 않으면 데이터(URL 포함)가 교환되기 전에 SSL 세션이 종료됩니다.

이 신호는 보안이 손상될 수 있음을 나타내는 오류 메시지를 사용자에게 표시하고 SSL 설정을 표시하는 데 사용할 수 있습니다(이를 얻으려면 sslConfiguration() 참조). 사용자가 원격 인증서를 분석한 후 계속 진행하기로 결정한 경우, 슬롯은 ignoreSslErrors()를 호출해야 합니다.

QSslSocket::sslErrors(), QNetworkReply::sslErrors(), QNetworkReply::sslConfiguration(), QNetworkReply::ignoreSslErrors()도 참조하세요 .

QList<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const

HTTP 엄격한 전송 보안 정책 목록을 반환합니다. 이 목록은 addStrictTransportSecurityHosts()를 통해 처음에 설정한 것과 다를 수 있습니다. "Strict-Transport-Security" 응답 헤더에서 HSTS 캐시가 업데이트된 경우.

addStrictTransportSecurityHosts() 및 QHstsPolicy참조하세요 .

[virtual] QStringList QNetworkAccessManager::supportedSchemes() const

액세스 관리자가 지원하는 모든 URL 스키마를 나열합니다.

QNetworkAccessManager 서브클래스에서 자체 지원 스키마를 제공하려면 이 메서드를 다시 구현하세요. 예를 들어 서브클래스가 새로운 프로토콜을 지원할 때 필요합니다.

int QNetworkAccessManager::transferTimeout() const

전송에 사용된 시간제한을 밀리초 단위로 반환합니다.

setTransferTimeout()도 참조하세요 .

[since 6.7] std::chrono::milliseconds QNetworkAccessManager::transferTimeoutAsDuration() const

데이터가 교환되지 않으면 전송이 중단되는 시간 초과 기간을 반환합니다.

기본 기간은 0이며, 이는 타임아웃이 사용되지 않음을 의미합니다.

이 함수는 Qt 6.7에 도입되었습니다.

setTransferTimeout(표준::크로노::밀리초)도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.