Code:
void CTRM_SymbianClientEngine::IssueHTTPGetL(const TDesC8& aUri/*,const TDesC16& bUri*/)
{
TUriParser8 uri;
uri.Parse(aUri);
_LIT(KA1,"inside CTRM_SymbClientEngine::IssueHTTPGetL line3");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA1);
TRAPD(err,SetupConnectionParamsL());
if(err==KErrNotReady)
{
_LIT(KNoIap,"User didn't select an IAP");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KNoIap);
}
RStringF method=iSession.StringPool().StringF(HTTP::EGET,RHTTPSession::GetTable());
iTransaction=iSession.OpenTransactionL(uri,*this,method);
RHTTPHeaders hdr=iTransaction.Request().GetHeaderCollection();
SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
SetHeaderL(hdr, HTTP::EAccept, KAccept);
iTransaction.SubmitL();
}
void CTRM_SymbianClientEngine::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
{
RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue);
CleanupClosePushL(valStr);
THTTPHdrVal val(valStr);
aHeaders.SetFieldL(iSession.StringPool().StringF(aHdrField,
RHTTPSession::GetTable()), val);
CleanupStack::PopAndDestroy(); // valStr
}
void CTRM_SymbianClientEngine::SetupConnectionParamsL()
{
_LIT(KA11,"inside CTRM_SymbClientEngine::SetupConnectionL line2");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA11);
TInt bearerFilter=EApBearerTypeAllBearers;
/*TInt currentProfileId;
iRepository->Get(KProEngActiveProfile,currentProfileId);
_LIT(KPanicStupcon1,"inside CTRM_SymbClientEngine->SetupConnection line 7");
PrintL(KPanicStupcon1);*/
iSession.OpenL();
CActiveApDb* aDb=CActiveApDb::NewL();
CleanupStack::PushL(aDb);
CApSettingsHandler* settings=CApSettingsHandler::NewLC(*aDb,ETrue,EApSettingsSelListIsPopUp,EApSettingsSelMenuSelectNormal,
KEApIspTypeAll,bearerFilter,KEApSortNameAscending,0,EVpnFilterBoth,ETrue);
TInt aApRet=settings->RunSettingsL(0,iSelectedIAP);
CleanupStack::PopAndDestroy(settings);
CleanupStack::PopAndDestroy(aDb);
if(aApRet!=KApUiEventSelected)
{
User::Leave(KErrNotReady);
}
else
{
User::LeaveIfError(iSocketServ.Connect());
User::LeaveIfError(iConnection.Open(iSocketServ));
TCommDbConnPref connPref;
connPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
connPref.SetIapId(iSelectedIAP);
User::LeaveIfError(iConnection.Start(connPref));
RStringPool strPool=iSession.StringPool();
RHTTPConnectionInfo connInfo=iSession.ConnectionInfo();
connInfo.SetPropertyL(strPool.StringF(HTTP::EHttpSocketServ,RHTTPSession::GetTable()),THTTPHdrVal (iSocketServ.Handle()));
connInfo.SetPropertyL(strPool.StringF(HTTP::EHttpSocketConnection,RHTTPSession::GetTable()),THTTPHdrVal(REINTERPRET_CAST(TInt,&iConnection)));
_LIT(KA12,"exiting CTRM_SymbClientEngine::SetupConnectionL");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA12);
}
}
void CTRM_SymbianClientEngine::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent)
{
switch(aEvent.iStatus)
{
case THTTPEvent::EGotResponseHeaders:
{
_LIT(KA13,"Response text from MHFRunL->EGotResponseHeaders");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA13);
RHTTPResponse resp = aTransaction.Response();
TBuf<30> buf;
buf.Copy(resp.StatusText().DesC());
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(buf);
}
break;
case THTTPEvent::EGotResponseBodyData:
{
_LIT(KA14,"Response text from MHFRunL->EGotResponseBodyData");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA14);
MHTTPDataSupplier* body=aTransaction.Response().Body();
TPtrC8 dataChunk;
TBool isLast=body->GetNextDataPart(dataChunk);
TInt aPos=0;
_LIT(KA15,"before seek");
if(iMhfState==0)
{
iRLbsImage.Seek(ESeekCurrent,aPos);
iRLbsImage.Write(dataChunk);
}
if(iMhfState==1)
{
//iRLbsImage.Seek(ESeekStart,0);
iRLbsImage.Write(0,dataChunk);
iMhfState=0;
}
/*TInt aErr;
aErr=iRLbsImage.Seek(ESeekCurrent,aPos);
if(aErr!=KErrNone)
{
_LIT(KK,"Error in seek");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KK);
}*/
/* _LIT(KA16,"after seek");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA16);
iRLbsImage.Write(dataChunk);
_LIT(KA17,"after write");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA17);*/
body->ReleaseData();
}
break;
case THTTPEvent::EResponseComplete:
{
_LIT(KA15,"Response text from MHFRunL->EResponseComplete");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA15);
}
break;
case THTTPEvent::ESucceeded:
{
_LIT(KA16,"Response text from MHFRunL->ESucceeded");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA16);
//aTransaction.Close();
iRLbsImage.Close();
//set image
/*CTRM_SymbianReadImageFromRFileConvertToBitmap* iImgConverter=CTRM_SymbianReadImageFromRFileConvertToBitmap::NewL();
iAppView->SetImgConverter(iImgConverter);
iImgConverter->ConvertFileToBitMap(KTxtFileName);//pass file name
*/ }
break;
case THTTPEvent::EFailed:
{
_LIT(KA17,"Response text from MHFRunL->EFailed");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA17);
//((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA16);
//aTransaction.Close();
}
break;
default:
{
_LIT(KA18,"Response text from MHFRunL->default");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KA18);
if(aEvent.iStatus<0)
{
//aTransaction.Close();
}
else
{
// Other events are not errors (e.g. permanent and temporary
// redirections)
}
}
break;
}
}
where iRLbsimage is a RFile obj....
and its implementation is as follows
void CTRM_SymbianClientEngine::PrepareFileToReceiveGpsImage()
{
_LIT(KXMLFilePath,"c:\\Data\\Images");
TFileName aGpsImage;
aGpsImage.Append(KXMLFilePath);
aGpsImage.Append(_L("\\LbsSample.jpg"));
TInt err=iRLbsImage.Replace(CCoeEnv::Static()->FsSession(),aGpsImage,EFileWrite);
if(err==KErrNotFound)//file does not exist - create it
{
err=iRLbsImage.Create(CCoeEnv::Static()->FsSession(),aGpsImage,EFileWrite);
if(err!=KErrNone)
{
_LIT(KGpsFileNtCreated,"Gps File is not created");
((CTRM_SymbianAppUi*)(CCoeEnv::Static()->AppUi()))->PrintL(KGpsFileNtCreated);
}
}
}
Here I guess The reason for crash is as --------