Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
void CSocketEngine::DoPeriodTask(){
  if(iTimer->IsActive()){
    iTimer->Cancel();
  }

  OnHttpError(EHttpConnectTimeOut);
  
  Cancel();
}
Exemplo n.º 3
0
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();
}
Exemplo n.º 4
0
void CSocketEngine::ReadMoreData(){
  if(EReading==iSocketStatus) ReceiveData();
  else OnHttpError(EHttpReadError);
}
Exemplo n.º 5
0
/**
 *  @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;
}