// Explorer.cpp: implementation of the CExplorer class.
//
//////////////////////////////////////////////////////////////////////
#include "Explorer.h"
#include <aknnotewrappers.h>
#include "http.hrh"
#include "HttpAppView.h"
#include "CommDbConnPref.h"
_LIT(KStrNewLine, "\r\n\r\n");
_LIT(KStrReturn, "\r\n");
_LIT(KStrNotConnected, "Not connected");
_LIT(KStrConnecting, "Connecting");
_LIT(KStrConnected, "Connected");
_LIT(KStrLookingUp, "Looking up");
//////////////////////////////////////////////////////////////////////////
_LIT(KStrGet, "GET ");
_LIT(KStrVersion, " HTTP/1.1");
_LIT(KStrPost, "POST ");
_LIT(KStrHost, "HOST: ");
_LIT(KStrXOnlineHost, "X-Online-Host: ");
_LIT(KStrPOSTHeaderContentLength, "Content-Length: 0");
_LIT(KAccept, "Accept: */*");
_LIT(KConnect, "Connection: Keep-Alive");
_LIT(KCacheControl, "Cache-Control: no-store");
_LIT(KUserAgent, "User-Agent: Nokia6681/2.0 (5.37.01) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1");
_LIT(KRange, "Range: bytes=");
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
CExplorer::CExplorer(MDisplayData& aMDisplayData):
CActive(EPriorityStandard),iMDisplayData(aMDisplayData)
{
iIAPSelect = 0;
iConnectType = 2;
iNeedHost = EFalse;
iInterval1 = 0;
iInterval2 = 0;
iStartPos = 0;
iEndPos = 204799;
}
CExplorer::~CExplorer()
{
// iConnection.Close();
delete iRecver;
iRecver = NULL;
delete iSender;
iSender = NULL;
Cancel();
if (iSocketServ.Handle() != 0)
{
iSocketServ.Close();
}
iLog.CloseLog();
iLog.Close();
}
CExplorer* CExplorer::NewLC(MDisplayData& aMDisplayData)
{
CExplorer* self = new(ELeave) CExplorer(aMDisplayData);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CExplorer* CExplorer::NewL(MDisplayData& aMDisplayData)
{
CExplorer* self = CExplorer::NewLC(aMDisplayData);
CleanupStack::Pop();
return self;
}
void CExplorer::ConstructL()
{
iLog.Connect();
iLog.CreateLog(_L("System"), _L("logfile"), EFileLoggingModeAppend);
ChangeStatus(ENotConnected);
CActiveScheduler::Add(this);
}
void CExplorer::StartL()
{
User::LeaveIfError(iSocketServ.Connect());
User::LeaveIfError(iConnection.Open(iSocketServ));
TCommDbConnPref pref;
pref.SetIapId(iIAPSelect); // IAP ID
pref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt ); // 不显示提示对话框
pref.SetDirection( ECommDbConnectionDirectionOutgoing );
iConnection.Start(pref);
iRecver = CRecver::NewL(*this,iSocket);
iSender = CSender::NewL(*this,iSocket);
ConnectL();
}
void CExplorer::ConnectL()
{
if (iEngineStatus == ENotConnected)
{
switch (iConnectType)
{
case 1:
{//lvs
iPort = 9003;
iServerName.Copy(KDefaultServerName);
iUrl.Copy(KDefaultUrl);
}
break;
case 2:
{//cmwap
iPort = 80;
iServerName.Copy(KDefaultServerName1);
if (0 >= iStartPos)
{
iUrl.Copy(KDefaultUrl1);
}
}
break;
case 3:
{//cmnet
iPort = 8088;
iServerName.Copy(KDefaultServerName1);
iUrl.Copy(KDefaultUrl);
}
break;
case 4:
{//white
// iPort = 8067;
// iServerName.Copy(KDefaultServerName2);
// iUrl.Copy(KDefaultUrl2);
iPort = 80;
iServerName.Copy(KDefaultServerName1_);
if (0 >= iStartPos)
{
iUrl.Copy(KDefaultUrl1_);
}
}
break;
default:
break;
}
if(2 == iConnectType || 4 == iConnectType)
{
if (!iNeedHost)
{
iRecver->iPushReceived = EFalse;
}
else
{
iRecver->iPushReceived = ETrue;
}
_LIT(KAddress,"10.0.0.172");
User::LeaveIfError(iAddr.Input(KAddress));
iAddr.SetPort(80);
iPort = 80;
ConnectL(iAddr.Address());
}
else
{
iRecver->iPushReceived = ETrue;
if(iAddr.Input(iServerName)==KErrNone)
{
ConnectL(iAddr.Address());
}
else
{
NULL;
}
}
}
}
void CExplorer::ConnectL(TUint32 aAddr)
{
if (iEngineStatus == ENotConnected)
{
iStartTime.HomeTime();
TInt err = iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp);
User::LeaveIfError(err);
iAddr.SetPort(iPort);
iAddr.SetAddress(aAddr);
iSocket.Connect(iAddr, iStatus);
ChangeStatus(EConnecting);
SetActive();
}
}
void CExplorer::DisconnectL()
{
if (iResolver.SubSessionHandle() != 0)
{
iResolver.Cancel();
iResolver.Close();
}
if (iSocket.SubSessionHandle() != 0)
{
iSocket.CancelAll();
iSocket.Close();
}
if (iSocketServ.Handle() != 0)
{
iSocketServ.Close();
}
ChangeStatus(ENotConnected);
}
void CExplorer::DoCancel()
{
if (iConnection.SubSessionHandle() != 0)
{
iConnection.Close();
}
if (iResolver.SubSessionHandle() != 0)
{
iResolver.Cancel();
iResolver.Close();
}
if (iSocket.SubSessionHandle() != 0)
{
iSocket.CancelAll();
iSocket.Close();
}
ChangeStatus(ENotConnected);
}
void CExplorer::RunL()
{
switch(iEngineStatus)
{
case EConnecting:
if (iStatus == KErrNone)
{
ChangeStatus(EConnected);
SetHttpHeader();
WriteL();
ReadL();
}
else
{
iSocket.Close();
ChangeStatus(ENotConnected);
}
break;
case ELookingUp:
iResolver.Close();
if (iStatus == KErrNone)
{
iNameRecord = iNameEntry();
TBuf<15> ipAddr;
TInetAddr::Cast(iNameRecord.iAddr).Output(ipAddr);
ChangeStatus(ENotConnected);
ConnectL(TInetAddr::Cast(iNameRecord.iAddr).Address());
}
else
{
ChangeStatus(ENotConnected);
}
break;
default:
break;
};
}
void CExplorer::SetServerName(TDesC aName)
{
iServerName.Copy(aName);
}
void CExplorer::SetPort(TInt aPort)
{
iPort = aPort;
}
void CExplorer::ChangeStatus(TSocketsEngineState aNewStatus)
{
iEngineStatus = aNewStatus;
}
void CExplorer::WriteL()
{
if (iEngineStatus == EConnected)
{
iSender->IssueSend(iBuffer);
}
}
void CExplorer::ReadL()
{
if (iEngineStatus == EConnected)
{
iRecver->Start(iStartPos);
}
}
void CExplorer::SetRequestMethod(TInt aMethod)
{
iRequestType = aMethod;
}
void CExplorer::SetHttpHeader()
{
if(iRequestType == REQUEST_METHOD_GET)
{
iHttpHeader = KStrGet;
iHttpHeader.Append(iUrl);
iHttpHeader.Append(KStrVersion);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KAccept);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KConnect);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KCacheControl);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KCacheControl);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KUserAgent);
iHttpHeader.Append(KStrReturn);
iHttpHeader.Append(KStrHost);
iHttpHeader.Append(iServerName);
iHttpHeader.Append(KStrReturn);
if (2 == iConnectType || 4 == iConnectType)
{
iHttpHeader.Append(KRange);
iHttpHeader.AppendNum(iStartPos);
iHttpHeader.Append(_L("-"));
iHttpHeader.AppendNum(iEndPos);
}
iHttpHeader.Append(KStrNewLine);
}
else
{
}
iBuffer.Copy(iHttpHeader);
}
TBool CExplorer::Isconnected()
{
return iEngineStatus == EConnected;
}
void CExplorer::KeyEventL(TInt aCode)
{
iMDisplayData.KeyEventL(aCode);
}
void CExplorer::SetStartWrite()
{
iMDisplayData.SetStartWrite();
}
void CExplorer::WriteToFile(TDesC8& aData)
{
iMDisplayData.WriteToFile(aData);
}
void CExplorer::SetEditText(TDesC8 aData)
{
iMDisplayData.SetEditText(aData);
}
void CExplorer::DisplayText(TDesC8& aData)
{
iMDisplayData.DisplayText(aData);
}
void CExplorer::SetIAP(TUint32 aIAP)
{
iIAPSelect = aIAP;
}
void CExplorer::WriteLog(const TDesC16& aData)
{
iLog.Write(aData);
}
void CExplorer::WriteLogInt(const TDesC16& aData, TInt aCount)
{
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Http.rar (90个子文件)
Http
s60_3rd
Http.vcproj 7KB
Http.ncb 179KB
Http.suo 86KB
inc
Http_reg.rsg 0B
Http_reg.mbg 141B
Env.h 18B
Http.rsg 496B
data
Http_reg.rss.I 4KB
Http.rls 809B
Http.rss.I 139KB
Http_reg.rss 675B
Http.rss 6KB
Http_reg.miflist 26B
sis
ggtvself.key 1KB
Http.pkg 767B
Http.SIS 33KB
ggtvself.cer 2KB
http.sisx 34KB
Http-SymbianOS-properties.xml 1KB
Http.sln 755B
gfx
qgn_menu.svg 4KB
src
Httpdocument.cpp 3KB
Http.cpp 546B
Httpapplication.cpp 1KB
Httpappview.cpp 3KB
Httpappui.cpp 3KB
Deb_S60_30M_WINSCW
http.uid.obj 3KB
HttpDocument.obj 44KB
Explorer.obj 456KB
BuildLog.htm 36KB
HttpApplication.obj 12KB
Recver.obj 387KB
vc80.pdb 0B
Http.obj 18KB
Sender.obj 19KB
vc80.idb 0B
HttpAppView.obj 493KB
HttpAppUi.obj 428KB
Http.vcproj.JIUBANG.chenjian.user 913B
group
selfsigned.cer 1KB
Http_20M.SISX 10KB
ms.bat 112B
bld.inf 361B
Http.mmp.orig 2KB
device_30.bat 86B
Http.mmp 2KB
Http_4.SISX 11KB
http.uid.cpp 182B
Http.pkg 770B
Http_2M.SISX 10KB
Http.SIS 10KB
selfsigned.key 887B
Http_2.SISX 11KB
ABLD.BAT 320B
common
inc
control
constrol.h 0B
HttpAppUi.h 1KB
Recver.h 1KB
Http.hrh 711B
Http.rss.inc 3KB
HttpApplication.h 868B
Sender.h 1KB
HttpDocument.h 2KB
Explorer.h 6KB
Http.pan 387B
MyFileDlg.h 1KB
HttpAppView.h 4KB
src
Explorer.cpp 10KB
HttpApplication.cpp 482B
HttpDocument.cpp 1KB
HttpAppView.cpp 7KB
Sender.cpp 1KB
Http.cpp 648B
constrol
constrol.cpp 0B
Recver.cpp 4KB
HttpAppUi.cpp 3KB
s60_21nd
inc
Env.h 0B
sis
Http.pkg 432B
Http.SIS 8KB
group
bld.inf 28B
Http.mmp 1KB
HTTP.opt 56KB
HTTP.DSP 10KB
HTTP.ncb 73KB
Http.rss 4KB
HTTP.plg 246B
HTTP.SUP.MAKE 8KB
Debug
HTTP.DSW 529B
HTTP.UID.CPP 155B
ABLD.BAT 316B
www.pudn.com.txt 218B
共 90 条
- 1
资源评论
朱moyimi
- 粉丝: 61
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功