我們需要一個定時器,等待一定時間後自動斷開網絡連接:
定義如下:
CPeriodic* iTimer;
static TInt TimerBack(void *p);//CPeriodic start 的回調函數
在HTTP連接的類中
初始化如下:
iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
在POST請求中加入:
iTimer->Start(20000000, 20000000, TCallBack(TimerBack, this));
在回調函數參考如下:
TInt CClientEngine::TimerBack(void *p)
{
CClientEngine* f = static_cast (p);
f->iTransaction.Close();//關掉網絡連接
f->iTimer->Cancel();//關掉定時器
CGblData::GetGblData()->DeleteWaitNoteL();
CGblData::GetAppUiPtr()->SetNotWait(ETrue);
HBufC8* tempdatabuf;
TBuf8<100> itempbuf =_L8("");
itempbuf.Append(R_MOLO_CLIENT_TIMEOUT);
itempbuf.Append(_L8(""));
tempdatabuf = itempbuf.Alloc();
CGblData::GetAppUiPtr()->ClientBodyReceivedL(
(const char*) tempdatabuf->Ptr());
if (tempdatabuf)
{
delete tempdatabuf;
tempdatabuf = NULL;
}
return 1;
}
在MHFRunL中加入:
iTimer->Cancel();
因爲當網絡請求先返回那麼我們就停止定時器
最後記得在析構函數中加入:
iTimer->Cancel();
if (iTimer)
{
delete iTimer;
iTimer = NULL;
}