📄 httpengine.cpp
字号:
/*
============================================================================
Name : HttpEngine.cpp
Author :
Version : 1.0
Copyright : Your copyright notice
Description : CHttpEngine implementation
============================================================================
*/
#include "HttpEngine.h"
#include <httpstringconstants.h>
#include <utf.h>
#include <http\mhttpdatasupplier.h>
#include "DisplayCallback.h"
CHttpEngine::CHttpEngine()
{
// No implementation required
}
CHttpEngine::~CHttpEngine()
{
iTrans.Cancel();
iTrans.Close();
iSession.Close();
iConnection.Stop();
iConnection.Close();
iSocketServ.Close();
}
CHttpEngine* CHttpEngine::NewLC()
{
CHttpEngine* self = new (ELeave)CHttpEngine();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CHttpEngine* CHttpEngine::NewL()
{
CHttpEngine* self=CHttpEngine::NewLC();
CleanupStack::Pop(); // self;
return self;
}
void CHttpEngine::ConstructL()
{
iSocketServ.Connect();
iConnection.Open(iSocketServ);
iSession.OpenL();
iSession.SetSessionEventCallback(this);
//set the sessions connection info
RStringPool strPool = iSession.StringPool();
RHTTPConnectionInfo connInfo = iSession.ConnectionInfo();
//to use our socket server and connection
connInfo.SetPropertyL(strPool.StringF(HTTP::EHttpSocketServ,
RHTTPSession::GetTable()), THTTPHdrVal(iSocketServ.Handle()));
connInfo.SetPropertyL(strPool.StringF(HTTP::EHttpSocketConnection,
RHTTPSession::GetTable()), THTTPHdrVal(REINTERPRET_CAST(TInt, &(iConnection))) );
}
void CHttpEngine::MHFRunL(RHTTPTransaction aTransaction,
const THTTPEvent& aEvent)
{
switch (aEvent.iStatus)
{
case THTTPEvent::EGotResponseBodyData:
{
if (iObser)
{
MHTTPDataSupplier* source = aTransaction.Response().Body();
TPtrC8 data8;
source->GetNextDataPart(data8);
HBufC* buf16=CnvUtfConverter::ConvertToUnicodeFromUtf8L(data8);
CleanupStack::PushL(buf16);
iObser->Display(*buf16);
CleanupStack::PopAndDestroy(buf16);
source->ReleaseData();
}
}
break;
default:
break;
}
}
TInt CHttpEngine::MHFRunError(TInt aError, RHTTPTransaction aTransaction,
const THTTPEvent& aEvent)
{
User::InfoPrint(_L("err"));
}
void CHttpEngine::MHFSessionRunL(const THTTPSessionEvent& aEvent)
{
}
TInt CHttpEngine::MHFSessionRunError(TInt aError,
const THTTPSessionEvent& aEvent)
{
User::InfoPrint(_L("session run err"));
}
void CHttpEngine::SetObser(MDisplayObser* aObser)
{
iObser=aObser;
}
void CHttpEngine::ConnectL(const TDesC& aUrl)
{
if (!iHaveStart)
{
iConnection.Start();
iHaveStart=ETrue;
}
TUriParser8 uri8;
HBufC8* url8=CnvUtfConverter::ConvertFromUnicodeToUtf8L(aUrl);
CleanupStack::PushL(url8);
uri8.Parse(*url8);
RStringF method=iSession.StringPool().StringF(HTTP::EGET, iSession.GetTable());
iTrans=iSession.OpenTransactionL(uri8, *this, method);
iTrans.Request().SetURIL(uri8);
iTrans.SubmitL();
CleanupStack::PopAndDestroy(url8);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -