Example #1
0
HTTPStatusCode	HTTPProtocol::GetStatusCodeEnum(SInt32 inCode)
{
	HTTPStatusCode statusCode = httpInternalServerError;
	for (SInt32 x = 0; x < httpNumStatusCodes; x++)
		if (GetStatusCode(x) == inCode)
			return x;
    return statusCode;
}
Example #2
0
UINT CGetAccountInfoRequest::ProcessResponse(CHttpFile& pHttpFile)
{
#ifdef	ARTSTORE
	return 1;
#else
	//Take the HttpFile and parse it.
	UINT nFileLength = pHttpFile.GetLength();
	
	CString strBuffer;
	CString strSearch;
	CString strList;
	LPSTR b = strBuffer.GetBuffer(nFileLength);
	pHttpFile.Read(b, nFileLength);
	strBuffer.ReleaseBuffer();

	CBasicRequestInfo::ProcessResponse(strBuffer);
	
	UINT nRet = atoi((LPCTSTR)GetStatusCode());
	if(nRet == 0) //success
	{
		CString strSearch;
		
		strSearch = "Last=";
		ParseFileForValue(strBuffer, strSearch, GetCustLastName());

		strSearch = "First=";
		ParseFileForValue(strBuffer, strSearch, GetCustFirstName());

		strSearch = "Street1=";
		ParseFileForValue(strBuffer, strSearch, GetStreet1());

		strSearch = "Street2=";
		ParseFileForValue(strBuffer, strSearch, GetStreet2());

		strSearch = "City=";
		ParseFileForValue(strBuffer, strSearch, GetCity());

		strSearch = "State=";
		ParseFileForValue(strBuffer, strSearch, GetState());

		strSearch = "Country=";
		ParseFileForValue(strBuffer, strSearch, GetCountry());

		strSearch = "ZipCode=";
		ParseFileForValue(strBuffer, strSearch, GetZipCode());

		strSearch = "EMail=";
		ParseFileForValue(strBuffer, strSearch, GetEMail());

		strSearch = "Phone=";
		ParseFileForValue(strBuffer, strSearch, GetPhone());

	}

	  return nRet;
#endif
}
Example #3
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;
}
Example #4
0
UINT CAccountInfo::ProcessResponse(CHttpFile& pHttpFile)
{
#ifdef	ARTSTORE
	return 1;
#else	
	//Take the HttpFile and parse it.
	UINT nFileLength = pHttpFile.GetLength();
	
	CString strBuffer;
	CString strSearch;
	CString strList;
	LPSTR b = strBuffer.GetBuffer(nFileLength);
	pHttpFile.Read(b, nFileLength);
	strBuffer.ReleaseBuffer();

	CBasicRequestInfo::ProcessResponse(strBuffer);

	UINT uStatusCode = atoi((LPCTSTR)GetStatusCode());
	if(uStatusCode == 0 || uStatusCode == 15) //success or in use
	{

		CString strSearch;
		
		strSearch = "AccountID=";
		CString strTemp = "";
		ParseFileForValue(strBuffer, strSearch, strTemp);
		m_strServerSuggestedAccountID = strTemp;

		if(m_strRequestedAccountID == strTemp){
			
			SetAccountID(strTemp);

			CString strResult;
			CString strNotify;
			strNotify.LoadString(IDS_PGS_ACCOUNTID_NOTIFICATION);
			strResult.Format(strNotify, GetAccountID());
			AfxMessageBox(strResult, MB_ICONINFORMATION);

			//at this point, the server has created our accountID (if new)

			CUUEncoder UUEncoder;

			GET_PMWAPP()->WriteProfileString(SECTION_ServerAccount,
														ENTRY_ServerAccountName,
														UUEncoder.EncodeString(GetAccountID()));
			GET_PMWAPP()->WriteProfileString(SECTION_ServerAccount,
														ENTRY_ServerPassword,
														UUEncoder.EncodeString(GetPassword()));
		}else{
			//try to establish account again
			return 100;
		}

	}

	if(!GetStatusCode())
	  return 1;
	else
	  return 0;
#endif
}