HTTPStatusCode HTTPProtocol::GetStatusCodeEnum(SInt32 inCode) { HTTPStatusCode statusCode = httpInternalServerError; for (SInt32 x = 0; x < httpNumStatusCodes; x++) if (GetStatusCode(x) == inCode) return x; return statusCode; }
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 }
/** * @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; }
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 }