void CSocketEngine::DoError(TSocketState /*aState*/){ switch(iSocketStatus){ //正在连接状态完成后,发送请求信息 case EConnecting: { // if(iReconnCnt<KMaxReconnectCount) // TryReconnect(); // else OnHttpError(EHttpConnectFailed); } return; case EReading: { OnHttpError(EHttpReadError); } return; //发送请求状态完成后,开始读取返回数据 case EWritting: { } break; case ESending: { } break; case EWrittingPost: { } break; default: break; } OnHttpError(EHttpUnexpectError); }
void CSocketEngine::DoPeriodTask(){ if(iTimer->IsActive()){ iTimer->Cancel(); } OnHttpError(EHttpConnectTimeOut); Cancel(); }
void OcImageLoader::Display(QString url,QString DirectoryUrl,int index,int total) { //http://211.151.17.177/meeting//UploadDoc/c878feaf43247aff65a3b14b896c4a65/2.JPG seanDirectoryUrl = DirectoryUrl; seanIndex = index; seanTotal = total; if(url.length()<2) return; m_strUrl = url; qDebug()<<"m_strUrl"<<m_strUrl; if(url.startsWith("http://",Qt::CaseInsensitive)==true) { m_bIsHttp = true; m_strLocalFileName = m_strCacheDir+"\\"+MD5(m_strUrl); // //看缓存目录中是否已有文件,如果没有向网络请求数据 if(QFile::exists(m_strLocalFileName)== false) { m_bCanShowImg = false; QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkRequest request; request.setUrl(QUrl(m_strUrl)); request.setRawHeader("User-Agent", "OcBrowser 1.0"); replyGet = manager->get(request); connect(replyGet, SIGNAL(finished()), this, SLOT(OnDownloadReady())); connect(replyGet, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadProgress(qint64,qint64))); connect(replyGet, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(OnHttpError(QNetworkReply::NetworkError))); m_bDownloading = true; return; } } else { m_bIsHttp = false; m_strLocalFileName = url; } //本地文件或者缓存中已经有这个图片就直接加载 m_bCanShowImg = true; m_imgOrgi = QImage(m_strLocalFileName); if(m_imgOrgi.isNull()==true) { //QMessageBox::warning(NULL,QString("tip"),m_strLocalFileName); } m_imgMain = m_imgOrgi.scaled(this->width(),this->height(),Qt::KeepAspectRatio, Qt::SmoothTransformation); this->update(); }
void CSocketEngine::ReadMoreData(){ if(EReading==iSocketStatus) ReceiveData(); else OnHttpError(EHttpReadError); }
/** * @brief HTTP每次请求接收到的第一个数据包 * * 处理第一个数据包 * * @return TBool 是否继续处理数据包 */ TBool CSocketEngine::GetFirstData(){ iTotalLen=0; //备份Http头 TInt pos=GetHttpHeadOverPos(iData1); if(pos>0){ if(pos>2048) iHeader=iHeader->ReAllocL(pos); iHeader->Des().Copy(iData1.Left(pos)); Log(_L8("Http(response) header:")); Log(iHeader->Des()); } TInt sc=GetStatusCode(iData1); //获得当前网络请求状态 //if(GetSHttpConnStatus(iData1)) if(200==sc||206==sc||301==sc||302==sc){ if(iData1.Find(_L8("www.wapforum.org"))>0&&iAppUi->iCountConnect<1){ //iType = EFalse; iCount=0; iHeader->Des().Zero(); Cancel(); iSocket.Close(); iAppUi->iCountConnect=1; WeaveUrl(preUri);//重新连接 return EFalse; } iAppUi->iCountConnect=2; CDesC8ArrayFlat* cookies=new (ELeave) CDesC8ArrayFlat(1); GetCookieArray(iData1,*cookies); if(cookies->Count()) iObserver->OnGetCookieArray(*cookies); delete cookies; TInt statusCode=GetStatusCode(iData1); if(301==statusCode||302==statusCode){ Log(_L8("302 Location:")); iCount=0; iHeader->Des().Zero(); Cancel(); iSocket.Close(); TPtrC8 urlRedir=GetHttpHeaderInfo(iData1,_L8("Location")); Log(urlRedir); CDesC8ArrayFlat* cookies=new (ELeave) CDesC8ArrayFlat(1); GetCookieArray(iData1,*cookies); HBufC8* t=CookiesString(*cookies); if(t){ Log(*t); SetCookie(*t); } delete cookies; delete t; if(urlRedir.Length()) WeaveUrl(urlRedir); else OnHttpError(EHttpBadHttpHeader); return EFalse; } //获得请求文件的总长度 iHttpHeadOverPos=GetHttpHeadOverPos(iData1); iTotalLen=GetLength(iData1); if(iTotalLen<0){ OnHttpError(EHttpContentLengthError); return EFalse; } }else{ OnHttpError(EHttpBadHttpHeader); return EFalse; } return ETrue; }