Read-only archive of the All About Symbian forum (2001–2013) · About this archive

Program close down after HandleCommandL

0 replies · 1,682 views · Started 20 October 2004

My application exists just after the event handler has finished, so I don't
know what is wrong. Maybe someone can help me.
First::the event handler is calling func1:

void MyClass::func1() {
HTTPclient = VCardHTTPClient::NewL(*this); //VCardHTTPClient* HTTPclient;

// Start C32 and initalize some device drivers. This is necessary when
running a test console as these won't
// have been started
VCardHTTPClient::InitCommsL();

//Construct URL ()
_LIT8(postenURL, "some url"😉;
TBuf8<68 + 10> buf(postenURL);
buf.Append(iView->GetTelNr()); //iView->GetTelNr() returns a TBuf<10>
HTTPclient->StartClientL(buf);
}

void
VCardHTTPClient::
InitCommsL()
{
TInt ret = User::LoadPhysicalDevice(PDD_NAME);
User::LeaveIfError(ret == KErrAlreadyExists ? KErrNone : ret);

#ifndef __WINS__
ret = User::LoadPhysicalDevice(PDD2_NAME);
ret = User::LoadPhysicalDevice(PDD3_NAME);
ret = User::LoadPhysicalDevice(PDD4_NAME);
#endif

ret = User::LoadLogicalDevice(LDD_NAME);
User::LeaveIfError(ret == KErrAlreadyExists ? KErrNone : ret);
ret = StartC32();
User::LeaveIfError(ret == KErrAlreadyExists ? KErrNone : ret);
}

VCardHTTPClient::
VCardHTTPClient()
: iReqBodySubmitBufferPtr(0,0) //TBuf<64>
VCardHTTPClient::iReqBodySubmitBufferPtr
{}

VCardHTTPClient::~VCardHTTPClient()
{
iSess.Close(); //RHTTPSession VCardHTTPClient::iSess
delete iReqBodySubmitBuffer;
delete iTransObs; //CHTTPEventHandler* VCardHTTPClient::iTransObs
delete iFormEncoder; //CHTTPFormEncoder* VCardHTTPClient::iFormEncoder
}

VCardHTTPClient* VCardHTTPClient::NewLC(CTerminalAppAppUi& aAppUi)
{
VCardHTTPClient* me = new (ELeave) VCardHTTPClient();
CleanupStack::PushL(me);
me->ConstructL(aAppUi);
return me;
}

VCardHTTPClient* VCardHTTPClient::NewL(CTerminalAppAppUi& aAppUi)
{
VCardHTTPClient* me = NewLC(aAppUi);
CleanupStack::Pop(me);
return me;
}

void VCardHTTPClient::ConstructL(CTerminalAppAppUi& aAppUi)
{
iSess.OpenL();

// Install this class as the callback for authentication requests
InstallAuthenticationL(iSess);

// User::LeaveIfError(iFileServ.Connect());
iTransObs = CHttpEventHandler::NewL(aAppUi);
}

void VCardHTTPClient::StartClientL(const TDesC8& aUri)
{
iDataChunkCount = 0; //TInt VCardHTTPClient::iDataChunkCount;
TUriParser8 uri;
uri.Parse(aUri);

RStringF method = iSess.StringPool().StringF(HTTP::EPOST,
RHTTPSession::GetTable());

iTrans = iSess.OpenTransactionL(uri, *iTransObs, method/*aMethod*/);
RHTTPHeaders hdr = iTrans.Request().GetHeaderCollection();

// Add headers appropriate to all methods
SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);

// Content type header
TBuf8<KMaxContentTypeSize> contTypeBuf;
_LIT(KTextHtml, "text/html"😉;

contTypeBuf.Copy(KTextHtml);

RStringF contTypeStr = iSess.StringPool().OpenFStringL(contTypeBuf);
THTTPHdrVal contType(contTypeStr);
hdr.SetFieldL(iSess.StringPool().StringF(HTTP::EContentType,
RHTTPSession::GetTable()), contType);
contTypeStr.Close();

MHTTPDataSupplier* dataSupplier = this;
iTrans.Request().SetBody(*dataSupplier);

iTrans.SubmitL(); //Submit the transaction
}

After this the event handler finishes and then, very shortly after, the
program closes down. Any idea why?

Joachim