Qt 의 HTTP--HTTP 요청 보 내기

2848 단어 Qt 의 HTTP
약술 하 다
Qt 를 사용 하여 HTTP 요청 을 보 낼 때 일반적으로 사용 하 는 링크 는 http://접두사 이 며,어떤 서버 는 지원 합 니 다. https:/접두사 의 링크 는 Qt 자체 가 https 를 지원 하지만 https 접근 은 SSL 인증 을 사용 해 야 하 며 QT 기본 값 은 SSL 인증 을 지원 하지 않 기 때문에 Qt 에서 https 를 사용 하려 면 SSL 인증 을 해 야 합 니 다.실현 은 매우 쉬 워 서 몇 걸음 이면 완성 할 수 있다.
2.HTTPS 와 HTTP 의 차이
1.소개
하이퍼텍스트 전송 프로 토 콜 HTTP 는 웹 브 라 우 저 와 웹 서버 사이 에서 정 보 를 전달 하 는 데 사 용 됩 니 다.HTTP 프로 토 콜 은 콘 텐 츠 를 명시 적 으로 보 내 고 그 어떠한 방식 의 데이터 암호 화 도 제공 하지 않 습 니 다.공격 자가 웹 브 라 우 저 와 사이트 서버 간 전송 메 시 지 를 캡 처 하면 그 정 보 를 직접 읽 을 수 있 기 때문에 HTTP 프로 토 콜 은 신용카드 번호,비밀번호 등 민감 한 정 보 를 전송 하 는 데 적합 하지 않 습 니 다.
HTTP 프로 토 콜 의 이러한 결함 을 해결 하기 위해 서 는 보안 소켓 하이퍼텍스트 전송 프로 토 콜 HTTPS 를 사용 해 야 합 니 다.데이터 전송의 안전 을 위해 HTTPS 는 HTTP 를 바탕 으로 SSL 프로 토 콜 을 추 가 했 고 SSL 은 인증서 에 의 해 서버 의 신분 을 검증 하고 브 라 우 저 와 서버 간 의 통신 을 암호 화 했다.
2.구별
https 프로 토 콜 은 ca 에 인증 서 를 신청 해 야 합 니 다.보통 무료 인증서 가 적 고 비용 을 내야 합 니 다.
http 는 하이퍼텍스트 전송 프로 토 콜 이 고 정 보 는 명문 전송 이 며 https 는 안전성 을 가 진 ssl 암호 화 전송 프로 토 콜 입 니 다.
http 와 https 는 완전히 다른 연결 방식 을 사용 하고 사용 하 는 포트 도 다 릅 니 다.전 자 는 80 이 고 후 자 는 443 입 니 다.
http 의 연결 은 매우 간단 하고 상태 가 없다.HTTPS 프로 토 콜 은 SSL+HTTP 프로 토 콜 로 구 축 된 암호 화 전송,인증 이 가능 한 네트워크 프로 토 콜 로 http 프로 토 콜 보다 안전 합 니 다.
3.SSL 인증 을 어떻게 진행 합 니까?
1.우선,Openssl 지원 이 필요 하고 SSL 로 인증 해 야 하기 때문에 대응 하 는 라 이브 러 리 파일 이 필요 합 니 다. libeay 32.dll 과 ssleay 32.dll.libeay32.dll 다운로드 필요 화해시키다 ssleay 32.dll 두 개의 라 이브 러 리 파일 을 프로그램 생 성 디 렉 터 리 에 복사 하거나 QtNetwork 모듈 의 라 이브 러 리 파일 디 렉 터 리 에 복사 합 니 다.
2.HTTP 요청 을 보 내기 전에 다음 과 같은 코드 를 추가 합 니 다.
void onSendHttpsRequest(QString url)
{
    QNetworkAccessManager* pManager = new QNetworkAccessManager(this);
    QNetworkRequest request;

    //   https       ;
    QSslConfiguration config;
    QSslConfiguration conf = request.sslConfiguration();
    conf.setPeerVerifyMode(QSslSocket::VerifyNone);
    conf.setProtocol(QSsl::TlsV1SslV3);
    request.setSslConfiguration(conf);

    request.setUrl(QUrl(url));       // "https://www.temp.com"
    QNetworkReply *pReply = pManager->post(request, bytePost);

    connect(pReply , SIGNAL(finished()) , this , SLOT(onFinished());
    connect(pReply , SIGNAL(error(QNetworkReply::NetworkError)) , this , SLOT(onError(QNetworkReply::NetworkError)));
}

//     ;
void onFinished()
{
    QNetworkReply *pReplay = qobject_cast(sender());
    //        ;
    QByteArray replyContent = pReplay->readAll();
}

//     ;
void onError(QNetworkReply::NetworkError errorCode)
{
    QNetworkReply *pReplay = qobject_cast(sender());
    //           ;
    qDebug()<< errorCode;
    qDebug()<< pReplay->errorString();
}

두 라 이브 러 리 파일 다운로드
1.있다 http://slproweb.com/products/Win32OpenSSL.html Win 32 OpenSSL 을 다운로드 하여 설치 하고 빈 디 렉 터 리 아래 의 라 이브 러 리 를 복사 하여 생 성 프로그램 exe 동급 디 렉 터 리 에 넣 으 면 됩 니 다.

좋은 웹페이지 즐겨찾기