我们需要一个定时器,等待一定时间后自动断开网络连接:
定义如下:
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;
}