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