이 페이지에서

QNetworkReply Class

QNetworkReply 클래스에는 ` QNetworkAccessManager`를 통해 전송된 요청의 데이터와 헤더가 포함되어 있습니다. 더 보기...

헤더: #include <QNetworkReply>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
상속: QIODevice

참고: 이 클래스의 모든 함수는 재진입 가능합니다.

공개 유형

enum NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, …, UnknownServerError }
RawHeaderPair

공개 함수

virtual ~QNetworkReply()
QVariant attribute(QNetworkRequest::Attribute code) const
QNetworkReply::NetworkError error() const
bool hasRawHeader(QAnyStringView headerName) const
QVariant header(QNetworkRequest::KnownHeaders header) const
(since 6.8) QHttpHeaders headers() const
void ignoreSslErrors(const QList<QSslError> &errors)
bool isFinished() const
bool isRunning() const
QNetworkAccessManager *manager() const
QNetworkAccessManager::Operation operation() const
QByteArray rawHeader(QAnyStringView headerName) const
QList<QByteArray> rawHeaderList() const
const QList<QNetworkReply::RawHeaderPair> &rawHeaderPairs() const
qint64 readBufferSize() const
QNetworkRequest request() const
virtual void setReadBufferSize(qint64 size)
void setSslConfiguration(const QSslConfiguration &config)
QSslConfiguration sslConfiguration() const
QUrl url() const

재구현된 공용 함수

virtual void close() override
virtual bool isSequential() const override

공개 슬롯

virtual void abort() = 0
virtual void ignoreSslErrors()

신호

void downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
void encrypted()
void errorOccurred(QNetworkReply::NetworkError code)
void finished()
void metaDataChanged()
void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
void redirectAllowed()
void redirected(const QUrl &url)
(since 6.3) void requestSent()
(since 6.3) void socketStartedConnecting()
void sslErrors(const QList<QSslError> &errors)
void uploadProgress(qint64 bytesSent, qint64 bytesTotal)

보호된 함수

QNetworkReply(QObject *parent = nullptr)
virtual void ignoreSslErrorsImplementation(const QList<QSslError> &errors)
void setAttribute(QNetworkRequest::Attribute code, const QVariant &value)
void setError(QNetworkReply::NetworkError errorCode, const QString &errorString)
void setFinished(bool finished)
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
(since 6.8) void setHeaders(const QHttpHeaders &newHeaders)
(since 6.8) void setHeaders(QHttpHeaders &&newHeaders)
void setOperation(QNetworkAccessManager::Operation operation)
void setRawHeader(const QByteArray &headerName, const QByteArray &value)
void setRequest(const QNetworkRequest &request)
virtual void setSslConfigurationImplementation(const QSslConfiguration &configuration)
void setUrl(const QUrl &url)
(since 6.8) void setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value)
virtual void sslConfigurationImplementation(QSslConfiguration &configuration) const

재구현된 보호된 함수

virtual qint64 writeData(const char *data, qint64 len) override

상세 설명

QNetworkReply 클래스는 QNetworkAccessManager 를 통해 전송된 요청과 관련된 데이터 및 메타데이터를 포함합니다. QNetworkRequest 와 마찬가지로, 이 클래스에는 URL과 헤더(파싱된 형태와 원시 형태 모두), 응답 상태에 대한 일부 정보, 그리고 응답 자체의 내용이 포함되어 있습니다.

QNetworkReply는 순차 액세스 방식의 QIODevice 입니다. 즉, 객체에서 데이터를 한 번 읽으면 더 이상 기기에서 해당 데이터를 보관하지 않습니다. 따라서 필요한 경우 이 데이터를 보관하는 것은 애플리케이션의 책임입니다. 네트워크에서 더 많은 데이터를 수신하여 처리할 때마다 readyRead() 신호가 발산됩니다.

downloadProgress() 신호는 데이터가 수신될 때도 발생하지만, 내용물에 변환(예: 압축 해제 및 프로토콜 오버헤드 제거)이 이루어진 경우, 이 신호에 포함된 바이트 수는 실제로 수신된 바이트 수와 다를 수 있습니다.

QNetworkReply는 응답의 내용에 연결된 QIODevice 이지만, 해당 내용이 포함된 작업의 경우 업로드 진행 상황을 나타내는 uploadProgress() 신호도 방출합니다.

참고: errorOccurred() 또는 finished() 신호에 연결된 슬롯 내에서 객체를 삭제해서는 안됩니다 . deleteLater()을 사용하십시오.

QNetworkRequest 및 QNetworkAccessManager도 참조하십시오 .

멤버 유형 설명서

enum QNetworkReply::NetworkError

요청 처리 과정에서 발견된 모든 가능한 오류 상태를 나타냅니다.

상수값설명
QNetworkReply::NoError0오류 상태가 없음.

참고: HTTP 프로토콜이 리디렉션을 반환하는경우 오류는 보고되지 않습니다. QNetworkRequest::RedirectionTargetAttribute 속성을 사용하여 리디렉션이 있는지 확인할 수 있습니다.

QNetworkReply::ConnectionRefusedError1원격 서버가 연결을 거부했습니다(서버가 요청을 수락하지 않음).
QNetworkReply::RemoteHostClosedError2전체 응답을 수신하고 처리하기 전에 원격 서버가 연결을 조기에 종료했습니다.
QNetworkReply::HostNotFoundError3원격 호스트 이름을 찾을 수 없음(잘못된 호스트 이름)
QNetworkReply::TimeoutError4원격 서버와의 연결이 시간 초과되었습니다.
QNetworkReply::OperationCanceledError5작업이 완료되기 전에 abort() 또는 close() 호출을 통해 작업이 취소되었습니다.
QNetworkReply::SslHandshakeFailedError6SSL/TLS 핸드셰이크가 실패하여 암호화된 채널을 설정할 수 없었습니다. sslErrors() 신호가 발생했어야 합니다.
QNetworkReply::TemporaryNetworkFailureError7네트워크 연결이 끊어져 연결이 중단되었으나, 시스템이 다른 액세스 포인트로 로밍을 시작했습니다. 요청을 다시 제출해야 하며, 연결이 재설정되는 대로 처리될 것입니다.
QNetworkReply::NetworkSessionFailedError8네트워크 연결이 끊어지거나 네트워크를 시작하지 못해 연결이 끊어졌습니다.
QNetworkReply::BackgroundRequestNotAllowedError9플랫폼 정책으로 인해 현재 백그라운드 요청이 허용되지 않습니다.
QNetworkReply::TooManyRedirectsError10리디렉션을 따르는 과정에서 최대 한도에 도달했습니다. 이 한도는 기본적으로 50으로 설정되어 있거나 QNetworkRequest::setMaxRedirectsAllowed()를 통해 설정된 값을 따릅니다. (이 값은 5.6 버전에서 도입되었습니다.)
QNetworkReply::InsecureRedirectError11리디렉션을 따르는 과정에서, 네트워크 액세스 API가 암호화된 프로토콜(https)에서 암호화되지 않은 프로토콜(http)로의 리디렉션을 감지했습니다. (이 값은 5.6 버전에서 도입되었습니다.)
QNetworkReply::ProxyConnectionRefusedError101프록시 서버와의 연결이 거부되었습니다(프록시 서버가 요청을 수락하지 않음).
QNetworkReply::ProxyConnectionClosedError102전체 응답을 수신하고 처리하기 전에 프록시 서버가 연결을 조기에 종료했습니다.
QNetworkReply::ProxyNotFoundError103프록시 호스트 이름을 찾을 수 없었습니다(유효하지 않은 프록시 호스트 이름).
QNetworkReply::ProxyTimeoutError104프록시와의 연결이 시간 초과되었거나, 전송된 요청에 대해 프록시가 제때 응답하지 않았습니다.
QNetworkReply::ProxyAuthenticationRequiredError105프록시가 요청을 처리하기 위해 인증을 요구했으나, 제공된 자격 증명(있는 경우)을 수락하지 않았습니다.
QNetworkReply::ContentAccessDenied201원격 콘텐츠에 대한 액세스가 거부되었습니다(HTTP 오류 403과 유사함).
QNetworkReply::ContentOperationNotPermittedError202원격 콘텐츠에 대해 요청된 작업이 허용되지 않습니다.
QNetworkReply::ContentNotFoundError203서버에서 원격 콘텐츠를 찾을 수 없습니다(HTTP 오류 404와 유사).
QNetworkReply::AuthenticationRequiredError204원격 서버에서 콘텐츠를 제공하기 위해 인증이 필요했으나, 제공된 인증 정보(있는 경우)가 수락되지 않았습니다.
QNetworkReply::ContentReSendError205요청을 다시 보내야 했지만, 예를 들어 업로드 데이터를 두 번째로 읽을 수 없는 등의 이유로 실패했습니다.
QNetworkReply::ContentConflictError206리소스의 현재 상태와 충돌하여 요청을 완료할 수 없었습니다.
QNetworkReply::ContentGoneError207요청된 리소스를 서버에서 더 이상 사용할 수 없습니다.
QNetworkReply::InternalServerError401서버에서 예기치 않은 상황이 발생하여 요청을 처리할 수 없었습니다.
QNetworkReply::OperationNotImplementedError402서버가 요청을 처리하는 데 필요한 기능을 지원하지 않습니다.
QNetworkReply::ServiceUnavailableError403서버가 현재 이 요청을 처리할 수 없습니다.
QNetworkReply::ProtocolUnknownError301프로토콜이 인식되지 않아 Network Access API가 요청을 처리할 수 없습니다.
QNetworkReply::ProtocolInvalidOperationError302요청된 작업이 이 프로토콜에서 유효하지 않습니다.
QNetworkReply::UnknownNetworkError99알 수 없는 네트워크 관련 오류가 감지되었습니다.
QNetworkReply::UnknownProxyError199알 수 없는 프록시 관련 오류가 감지되었습니다.
QNetworkReply::UnknownContentError299원격 콘텐츠와 관련된 알 수 없는 오류가 감지되었습니다.
QNetworkReply::ProtocolFailure399프로토콜 오류가 감지되었습니다(구문 분석 오류, 유효하지 않거나 예기치 않은 응답 등).
QNetworkReply::UnknownServerError499서버 응답과 관련된 알 수 없는 오류가 감지되었습니다.

error() 및 errorOccurred()도 참조하십시오 .

QNetworkReply::RawHeaderPair

RawHeaderPair는 std::pair<QByteArray, QByteArray>이며, 여기서 첫 번째 요소인 QByteArray 는 헤더 이름이고 두 번째 요소는 헤더입니다.

멤버 함수 설명서

[explicit protected] QNetworkReply::QNetworkReply(QObject *parent = nullptr)

parent 를 부모로 하는 QNetworkReply 객체를 생성합니다.

QNetworkReply 객체는 직접 인스턴스화할 수 없습니다. 이를 위해서는 QNetworkAccessManager 의 함수를 사용하십시오.

[virtual noexcept] QNetworkReply::~QNetworkReply()

이 응답을 처리하고 이와 관련된 모든 리소스를 해제합니다. 아직 열려 있는 네트워크 연결이 있다면, 해당 연결이 닫힙니다.

abort() 및 close()도 참조하십시오 .

[pure virtual slot] void QNetworkReply::abort()

작업을 즉시 중단하고 아직 열려 있는 모든 네트워크 연결을 닫습니다. 진행 중인 업로드도 중단됩니다.

finished() 신호도 발송됩니다.

close() 및 finished()도 참조하십시오 .

QVariant QNetworkReply::attribute(QNetworkRequest::Attribute code) const

code 코드와 연관된 속성을 반환합니다. 해당 속성이 설정되지 않은 경우, 유효하지 않은 QVariant 객체( QMetaType::UnknownType 유형)를 반환합니다.

이 함수가 반환하는 값에는 QNetworkRequest::Attribute 에 나열된 기본값이 적용될 것으로 예상할 수 있습니다.

setAttribute() 및 QNetworkRequest::Attribute도 참조하십시오 .

[override virtual] void QNetworkReply::close()

QIODevice::close()를 재구현합니다.

이 장치를 읽기 모드로 닫습니다. 읽지 않은 데이터는 버려지지만, 네트워크 리소스는 작업이 완료될 때까지 해제되지 않습니다. 특히, 업로드가 진행 중인 경우, 완료될 때까지 계속됩니다.

모든 작업이 완료되고 네트워크 리소스가 해제되면 finished() 신호가 발생합니다.

abort() 및 finished()도 참조하십시오 .

[signal] void QNetworkReply::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)

이 신호는 해당 네트워크 요청에 다운로드가 포함된 경우, 다운로드 진행 상황을 알리기 위해 발송됩니다. 이 요청과 관련된 다운로드가 없는 경우, 이 신호는 bytesReceived 와 bytesTotal 의 값이 모두 0인 상태로 한 번 발송됩니다.

bytesReceived 매개변수는 수신된 바이트 수를 나타내며, bytesTotal 는 다운로드될 것으로 예상되는 총 바이트 수를 나타냅니다. 다운로드될 바이트 수가 알려지지 않은 경우, bytesTotal 는 -1이 됩니다.

bytesReceived 가 bytesTotal 와 같아지면 다운로드가 완료됩니다. 이때 bytesTotal 는 -1이 아닙니다.

bytesReceived 와 bytesTotal 의 값은 size(), read() 또는 readAll()을 통해 얻은 총 바이트 수, 혹은 헤더(ContentLengthHeader)의 값과 다를 수 있다는 점에 유의하십시오. 그 이유는 다운로드 과정에서 프로토콜 오버헤드가 발생하거나 데이터가 압축될 수 있기 때문입니다.

uploadProgress() 및 bytesAvailable()도 참조하십시오 .

[signal] void QNetworkReply::encrypted()

이 신호는 SSL/TLS 세션이 초기 핸드셰이크를 성공적으로 완료했을 때 전송됩니다. 이 시점에서는 아직 사용자 데이터가 전송되지 않았습니다. 이 신호는 인증서 체인에 대한 추가 검사를 수행하는 데 사용할 수 있으며, 예를 들어 웹사이트의 인증서가 변경되었을 때 사용자에게 알리는 용도로 활용될 수 있습니다. 응답이 예상된 기준과 일치하지 않는 경우, 이 신호에 연결된 슬롯에서 ` QNetworkReply::abort()`를 호출하여 세션을 중단해야 합니다. 사용 중인 SSL 구성은 ` QNetworkReply::sslConfiguration()` 메서드를 사용하여 확인할 수 있습니다.

내부적으로 QNetworkAccessManager 는 요청을 병렬로 처리할 수 있도록 서버에 대한 여러 연결을 열 수 있습니다. 이러한 연결은 재사용될 수 있으므로, encrypted() 신호가 발생하지 않을 수 있습니다. 즉, QNetworkAccessManager 의 수명 주기 동안 해당 사이트에 대한 첫 번째 연결에 대해서만 이 신호를 수신할 수 있다는 것이 보장됩니다.

QSslSocket::encrypted() 및 QNetworkAccessManager::encrypted()도 참조하십시오 .

QNetworkReply::NetworkError QNetworkReply::error() const

이 요청을 처리하는 과정에서 발견된 오류를 반환합니다. 오류가 발견되지 않은 경우, ` NoError`를 반환합니다.

setError()도 참조하십시오 .

[signal] void QNetworkReply::errorOccurred(QNetworkReply::NetworkError code)

이 신호는 응답 과정에서 오류가 감지되면 발생합니다. 이어서 finished() 신호가 발생하여 연결이 종료되었음을 알립니다.

code 매개변수에는 감지된 오류의 코드가 포함됩니다. 오류 상태에 대한 텍스트 설명을 얻으려면 errorString()를 호출하십시오.

참고: 이 신호에 연결된 슬롯에서 객체를 삭제하지마십시오 . deleteLater()를 사용하십시오.

error() 및 errorString()도 참조하십시오 .

[signal] void QNetworkReply::finished()

이 신호는 응답 처리가 완료되었을 때 발생합니다. 이 신호가 발생한 후에는 응답의 데이터나 메타데이터에 더 이상 업데이트가 이루어지지 않습니다.

close() 또는 abort()가 호출되지 않은 한, 응답은 여전히 읽기 모드로 열려 있으므로 read() 또는 readAll()를 호출하여 데이터를 가져올 수 있습니다. 특히, readyRead()의 결과로 read()가 호출되지 않은 경우, readAll()를 호출하면 QByteArray 에 전체 내용이 담겨 반환됩니다.

이 신호는 QNetworkAccessManager::finished()과 함께 발생하며, 해당 신호의 reply 매개변수는 이 객체입니다.

참고: 이 신호에 연결된 슬롯에서 객체를 삭제하지마십시오 . deleteLater()를 사용하십시오.

또한 isFinished()를 사용하여 finished() 신호를 수신하기 전이라도 QNetworkReply 가 완료되었는지 확인할 수 있습니다.

setFinished(), QNetworkAccessManager::finished() 및 isFinished()도 참조하십시오 .

bool QNetworkReply::hasRawHeader(QAnyStringView headerName) const

원격 서버에서 name headerName 의 원시 헤더를 전송한 경우, true 를 반환합니다.

참고: Qt 6.7 이전버전에서는 이 함수가 QByteArray 만 인수로 받았습니다.

rawHeader()도 참조하십시오 .

원격 서버에서 ‘ header ’ 헤더를 전송한 경우, 해당 헤더의 값을 반환합니다. 헤더가 전송되지 않은 경우, ‘ QVariant ’를 반환합니다.

rawHeader(), setHeader(), QNetworkRequest::header()도 참조하십시오 .

[since 6.8] QHttpHeaders QNetworkReply::headers() const

원격 서버에서 전송한 헤더를 반환합니다.

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

setHeaders(), QNetworkRequest::setAttribute() 및 QNetworkRequest::Attribute도 참조하십시오 .

[virtual slot] void QNetworkReply::ignoreSslErrors()

이 함수가 호출되면, 인증서 유효성 검사 오류를 포함하여 네트워크 연결과 관련된 SSL 오류가 무시됩니다.

경고: 반드시 사용자가 sslErrors() 신호로 보고된 오류를 확인할 수 있도록 하고, 사용자가 진행을 허용한다는 확인을 받은 후에만 이 메서드를 호출하십시오. 예기치 않은 오류가 발생하면 응답을 중단해야 합니다. 실제 오류를 확인하지 않고 이 메서드를 호출하면 애플리케이션에 보안 위험이 발생할 가능성이 매우 높습니다. 각별히 주의하여 사용하십시오!

이 함수는 발견된 오류 항목을 나타내는 sslErrors() 신호에 연결된 슬롯에서 호출할 수 있습니다.

참고: ` QNetworkAccessManager`에 대해 HTTP Strict Transport Security가 활성화된경우 , 이 함수는 아무런 효과가 없습니다.

참고: 이 슬롯은 오버로드되어 있습니다. 이 슬롯에 연결하려면:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        networkReply, qOverload<>(&QNetworkReply::ignoreSslErrors));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        networkReply, [receiver = networkReply]() { receiver->ignoreSslErrors(); });
더 많은 예제와 접근 방식은 오버로드된 슬롯에 연결하기를 참조하십시오.

sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors()도 참조하십시오 .

void QNetworkReply::ignoreSslErrors(const QList<QSslError> &errors)

이 함수가 호출되면, errors 에 명시된 SSL 오류들이 무시됩니다.

참고: 대부분의 SSL 오류는 인증서와 관련되어있으므로 , 대부분의 경우 해당 SSL 오류와 관련된 예상 인증서를 설정해야 합니다. 예를 들어, 자체 서명된 인증서를 사용하는 서버에 요청을 보내려는 경우, 다음 코드 조각을 참고하십시오:

QList<QSslCertificate> cert = QSslCertificate::fromPath("server-certificate.pem"_L1);
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);

QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://server.tld/index.html")));
reply->ignoreSslErrors(expectedSslErrors);
// here connect signals etc.

이 함수를 여러 번 호출하면 이전 호출에서 전달된 오류 목록이 대체됩니다. 빈 목록을 인수로 전달하여 이 함수를 호출하면 무시할 오류 목록을 지울 수 있습니다.

참고: QNetworkAccessManager 에 대해 HTTP Strict Transport Security가 활성화된경우 , 이 함수는 아무런 효과가 없습니다.

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

sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkAccessManager::setStrictTransportSecurityEnabled()도 참조하십시오 .

[virtual protected] void QNetworkReply::ignoreSslErrorsImplementation(const QList<QSslError> &errors)

이 가상 메서드는 ` ignoreSslErrors()`의 동작을 재정의할 수 있도록 제공됩니다. ` ignoreSslErrors()`는 이 메서드를 감싸는 공용 래퍼입니다. ` errors `에는 사용자가 무시하고자 하는 오류들이 포함되어 있습니다.

ignoreSslErrors()도 참조하십시오 .

bool QNetworkReply::isFinished() const

응답이 완료되었거나 중단된 경우 ` true `를 반환합니다.

isRunning()도 참조하십시오 .

bool QNetworkReply::isRunning() const

요청이 아직 처리 중이고 응답이 완료되지도 않았으며 중단되지도 않은 경우 true 를 반환합니다.

isFinished()도 참조하십시오 .

[override virtual] bool QNetworkReply::isSequential() const

QIODevice::isSequential() const를 재구현합니다.

QNetworkAccessManager *QNetworkReply::manager() const

이 QNetworkReply 객체를 생성하는 데 사용된 QNetworkAccessManager 를 반환합니다. 초기에는 이 객체가 부모 객체이기도 합니다.

[signal] void QNetworkReply::metaDataChanged()

이 신호는 이 응답의 메타데이터가 변경될 때마다 전송됩니다. 메타데이터란 콘텐츠(데이터) 자체가 아닌 모든 정보를 말하며, 여기에는 네트워크 헤더도 포함됩니다. 대부분의 경우, 데이터의 첫 번째 바이트가 수신될 때쯤이면 메타데이터가 완전히 파악됩니다. 그러나 데이터 처리 도중 헤더나 기타 메타데이터의 업데이트를 수신할 수도 있습니다.

header(), rawHeaderList(), rawHeader(), hasRawHeader()도 참조하십시오 .

QNetworkAccessManager::Operation QNetworkReply::operation() const

이 답글에 대해 게시된 작업을 반환합니다.

setOperation()도 참조하십시오 .

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

SSL/TLS 핸드셰이크에서 PSK 암호 모음이 협상되어 PSK 인증이 필요한 경우 이 신호가 전송됩니다.

PSK를 사용할 때, SSL 핸드셰이크가 계속 진행되려면 클라이언트가 서버에 유효한 신원 정보와 유효한 사전 공유 키를 전송해야 합니다. 애플리케이션은 필요에 따라 전달된 ` authenticator ` 객체를 채움으로써, 이 신호에 연결된 슬롯을 통해 이 정보를 제공할 수 있습니다.

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

참고: ` authenticator `객체는 `reply`가 소유하며, 애플리케이션에서 이를 삭제해서는 안 됩니다.

QSslPreSharedKeyAuthenticator도 참조하십시오 .

QByteArray QNetworkReply::rawHeader(QAnyStringView headerName) const

원격 서버에서 전송한 헤더 headerName 의 원시 내용을 반환합니다. 해당 헤더가 없는 경우, 빈 바이트 배열을 반환하며, 이는 빈 헤더와 구별되지 않을 수 있습니다. 서버가 해당 헤더 필드를 전송했는지 확인하려면 ` hasRawHeader()`를 사용하십시오.

참고: Qt 6.7 이전버전에서는 이 함수가 QByteArray 만 인수로 받았습니다.

참조: setRawHeader(), hasRawHeader(), header().

QList<QByteArray> QNetworkReply::rawHeaderList() const

원격 서버에서 전송한 헤더 필드 목록을 전송된 순서대로 반환합니다. 중복된 헤더는 제외됩니다.

const QList<QNetworkReply::RawHeaderPair> &QNetworkReply::rawHeaderPairs() const

원시 헤더 쌍의 목록을 반환합니다.

qint64 QNetworkReply::readBufferSize() const

읽기 버퍼의 크기를 바이트 단위로 반환합니다.

setReadBufferSize()도 참조하십시오 .

[signal] void QNetworkReply::redirectAllowed()

redirected() 신호를 처리하는 클라이언트 코드가 새 URL을 확인한 후, 리디렉션이 진행되도록 이 신호를 발송합니다. 이 프로토콜은 리디렉션 정책이 다음과 같이 설정된 네트워크 요청에 적용됩니다. QNetworkRequest::UserVerifiedRedirectPolicy

QNetworkRequest::UserVerifiedRedirectPolicy, QNetworkAccessManager::setRedirectPolicy() 및 QNetworkRequest::RedirectPolicyAttribute도 참조하십시오 .

[signal] void QNetworkReply::redirected(const QUrl &url)

요청에 ` QNetworkRequest::ManualRedirectPolicy `가 설정되지 않았고, 서버가 `location` 헤더에 유효한 URL을 포함하여 3xx 상태 코드(구체적으로는 301, 302, 303, 305, 307 또는 308 상태 코드)로 응답하여 HTTP 리디렉션을 나타내는 경우 이 신호가 발생합니다. url 매개변수에는 서버가 location 헤더에 반환한 새로운 리디렉션 URL이 포함됩니다.

QNetworkRequest::RedirectPolicy도 참조하십시오 .

QNetworkRequest QNetworkReply::request() const

이 응답에 대해 전송된 요청을 반환합니다. 특히, 요청의 URL은 응답의 URL과 다를 수 있다는 점에 유의하십시오.

QNetworkRequest::url(), url(), setRequest()도 참조하십시오 .

[signal, since 6.3] void QNetworkReply::requestSent()

이 신호는 요청이 전송되었을 때 1회 이상 발생합니다. 사용자 정의 진행 상황 표시나 타임아웃 처리에 유용합니다.

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

metaDataChanged() 및 socketStartedConnecting()도 참조하십시오 .

[protected] void QNetworkReply::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)

code 속성의 값을 value 로 설정합니다. 이전에 code 가 설정되어 있었다면, 이 값이 덮어쓰게 됩니다. value 가 유효하지 않은 QVariant 인 경우, 해당 속성은 해제됩니다.

attribute() 및 QNetworkRequest::setAttribute()도 참조하십시오 .

[protected] void QNetworkReply::setError(QNetworkReply::NetworkError errorCode, const QString &errorString)

오류 상태를 ` errorCode`로 설정합니다. 사람이 읽을 수 있는 메시지는 ` errorString`로 설정됩니다.

setError()를 호출해도 errorOccurred(QNetworkReply::NetworkError) 신호는 발생하지 않습니다.

error() 및 errorString()도 참조하십시오 .

[protected] void QNetworkReply::setFinished(bool finished)

응답을 ` finished`로 설정합니다.

이 설정을 적용한 후에는 응답 데이터가 변경되어서는 안 됩니다.

finished() 및 isFinished()도 참조하십시오 .

[protected] void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)

알려진 헤더 header 의 값을 value 로 설정합니다. 해당 헤더의 원시 형식도 함께 설정됩니다.

header(), setRawHeader() 및 QNetworkRequest::setHeader()도 참조하십시오 .

[protected, since 6.8] void QNetworkReply::setHeaders(const QHttpHeaders &newHeaders)

이 네트워크 응답의 헤더로 newHeaders 를 설정하며, 이전에 설정된 헤더는 모두 덮어씁니다.

일부 헤더가 알려진 헤더와 일치하는 경우, 해당 헤더는 파싱되며 파싱된 형태도 함께 설정됩니다.

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

headers() 및 QNetworkRequest::KnownHeaders도 참조하십시오 .

[protected, since 6.8] void QNetworkReply::setHeaders(QHttpHeaders &&newHeaders)

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

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

[protected] void QNetworkReply::setOperation(QNetworkAccessManager::Operation operation)

이 객체에 대한 연관 연산을 ‘ operation ’로 설정합니다. 이 값은 ` operation()` 메서드에서 반환됩니다.

참고: 이 연산은 이 객체가 생성될 때 설정되어야 하며, 이후에는 변경되어서는 안 됩니다.

operation() 및 setRequest()도 참조하십시오 .

[protected] void QNetworkReply::setRawHeader(const QByteArray &headerName, const QByteArray &value)

headerName 원시 헤더의 값을 value 로 설정합니다. 이전에 headerName 가 설정된 경우, 이 값은 덮어쓰게 됩니다. 동일한 이름의 여러 HTTP 헤더는 값이 쉼표로 구분되어 연결된 하나의 헤더와 기능적으로 동일합니다.

headerName 가 알려진 헤더와 일치하는 경우, 값 value 가 파싱되며, 이에 상응하는 파싱된 형식도 함께 설정됩니다.

rawHeader(), header(), setHeader(), QNetworkRequest::setRawHeader()도 참조하십시오 .

[virtual] void QNetworkReply::setReadBufferSize(qint64 size)

읽기 버퍼의 크기를 size 바이트로 설정합니다. 읽기 버퍼는 QIODevice::read() 함수를 통해 읽기 전에 네트워크에서 다운로드 중인 데이터를 임시로 저장하는 버퍼입니다. 버퍼 크기를 0으로 설정하면 버퍼 크기에 제한이 없어집니다.

QNetworkReply 이 버퍼가 가득 차면(즉, ` bytesAvailable()`가 ` size ` 이상을 반환하면) 네트워크에서 읽기를 중지하려고 시도하므로, 다운로드 속도도 함께 줄어듭니다. 버퍼 크기에 제한이 없는 경우, ` QNetworkReply `는 네트워크에서 가능한 한 빠르게 다운로드하려고 시도합니다.

QAbstractSocket::setReadBufferSize()과 달리, QNetworkReply 는 읽기 버퍼 크기의 정확성을 보장할 수 없습니다. 즉, bytesAvailable()는 size 보다 큰 값을 반환할 수 있습니다.

readBufferSize()도 참조하십시오 .

[protected] void QNetworkReply::setRequest(const QNetworkRequest &request)

이 객체에 연결된 요청을 ` request`로 설정합니다. 이 값은 ` request()` 함수에서 반환됩니다.

참고: 요청은 이 객체가 생성될 때 설정되어야 하며, 이후에는 변경되어서는 안 됩니다.

request() 및 setOperation()도 참조하십시오 .

void QNetworkReply::setSslConfiguration(const QSslConfiguration &config)

가능한 경우, 이 요청과 관련된 네트워크 연결의 SSL 구성을 config 의 구성으로 설정합니다.

sslConfiguration()도 참조하십시오 .

[virtual protected] void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &configuration)

이 가상 메서드는 ` setSslConfiguration()`의 동작을 재정의할 수 있도록 제공됩니다. ` setSslConfiguration()`는 이 메서드를 감싸는 공용 래퍼입니다. 이 메서드를 재정의하는 경우, SSL 구성을 설정하려면 ` configuration `를 사용하십시오.

sslConfigurationImplementation() 및 setSslConfiguration()도 참조하십시오 .

[protected] void QNetworkReply::setUrl(const QUrl &url)

처리 중인 URL을 url 로 설정합니다. 일반적으로 URL은 게시된 요청의 URL과 일치하지만, 여러 가지 이유로 다를 수 있습니다(예: 파일 경로가 절대 경로나 정규화된 경로로 변환된 경우).

url(), request(), QNetworkRequest::url()도 참조하십시오 .

[protected, since 6.8] void QNetworkReply::setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value)

name 헤더의 값을 value 로 설정합니다. 이전에 name 가 설정되어 있었다면, 이 값이 덮어쓰게 됩니다.

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

[signal, since 6.3] void QNetworkReply::socketStartedConnecting()

이 신호는 소켓이 연결 중일 때, 요청을 보내기 전에 0회 이상 발생합니다. 사용자 정의 진행 상황 표시나 타임아웃 처리에 유용합니다.

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

metaDataChanged() 및 requestSent()도 참조하십시오 .

QSslConfiguration QNetworkReply::sslConfiguration() const

SSL이 사용된 경우, 이 응답과 관련된 SSL 구성 및 상태를 반환합니다. 여기에는 원격 서버의 인증서, 인증 기관(CA)으로 이어지는 인증서 체인, 그리고 사용 중인 암호화 알고리즘이 포함됩니다.

sslErrors()가 호출될 경우(호출되는 경우), 상대방의 인증서와 해당 인증서 체인은 이때 이미 파악되어 있습니다.

setSslConfiguration()도 참조하십시오 .

[virtual protected] void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &configuration) const

이 가상 메서드는 sslConfiguration()의 동작을 재정의할 수 있도록 제공됩니다. sslConfiguration()는 이 메서드를 감싸는 공용 래퍼입니다. 구성 정보는 configuration 에 반환됩니다.

setSslConfigurationImplementation() 및 sslConfiguration()도 참조하십시오 .

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

이 신호는 SSL/TLS 세션 설정 과정에서 인증서 검증 오류를 포함한 오류가 발생한 경우 발생합니다. ` errors ` 매개변수에는 오류 목록이 포함됩니다.

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

이 신호를 사용하여 사용자에게 보안이 침해되었을 수 있음을 알리는 오류 메시지를 표시하고, SSL 설정을 표시할 수 있습니다(설정을 확인하려면 sslConfiguration()을 참조하십시오). 사용자가 원격 인증서를 분석한 후 계속 진행하기로 결정하면, 해당 슬롯은 ignoreSslErrors()을 호출해야 합니다.

QSslSocket::sslErrors(), QNetworkAccessManager::sslErrors(), sslConfiguration(), ignoreSslErrors()도 참조하십시오 .

[signal] void QNetworkReply::uploadProgress(qint64 bytesSent, qint64 bytesTotal)

이 신호는 해당 네트워크 요청에 업로드 단계가 있는 경우, 그 진행 상황을 알리기 위해 발송됩니다. 이 요청과 관련된 업로드가 없는 경우, 이 신호는 발송되지 않습니다.

bytesSent 매개변수는 업로드된 바이트 수를 나타내며, bytesTotal 는 업로드될 총 바이트 수를 나타냅니다. 업로드될 바이트 수를 확인할 수 없는 경우, bytesTotal 는 -1이 됩니다.

bytesSent 가 bytesTotal 와 같아지면 업로드가 완료됩니다. 이때 bytesTotal 는 -1이 아닙니다.

downloadProgress()함수도 참조하십시오 .

QUrl QNetworkReply::url() const

다운로드되거나 업로드된 콘텐츠의 URL을 반환합니다. 이 URL은 원래 요청의 URL과 다를 수 있습니다. 요청에서 리디렉션이 활성화된 경우, 이 함수는 네트워크 API가 현재 접근 중인 URL, 즉 요청이 리디렉션된 리소스의 URL을 반환합니다.

request(), setUrl(), QNetworkRequest::url(), redirected()도 참조하십시오 .

[override virtual protected] qint64 QNetworkReply::writeData(const char *data, qint64 len)

QIODevice::writeData(const char *data, qint64 maxSize)를 재구현합니다.

© 2026 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.