谁有symbian http 下载例子

xyj0663 2010-06-01 06:31:55
大家好,最近要写一个http下载的功能,找了NOKIA里的一个例子,但是不行,我主要的功能就是要判断APN,然后根据不同的APN进行下载文件或者网页,我是要把它封装成一个库,谁有这样的例子或者类似的,麻烦发我一个,里面的道理我基本明白,但就是调不出来,就是我用CMNET能返回网页,但用CMWAP就不行了
...全文
363 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
a14776584 2010-06-10
  • 打赏
  • 举报
回复
移动的拦截页的Content-Type: application/vnd.wap.wmlc可以作为特征之一
冰水混合物l 2010-06-10
  • 打赏
  • 举报
回复
在官方网站上有个程序包,是专说这方面的。正好前两天用过。也是CSDN的网友介绍的。
冰水混合物l 2010-06-09
  • 打赏
  • 举报
回复
关注一下。正好最近也要用这个方面的东西。
xyj0663 2010-06-08
  • 打赏
  • 举报
回复
请问如何判断返回的内容是移动的拦截页?
xyj0663 2010-06-07
  • 打赏
  • 举报
回复
上面的问题已经解决,呵呵。。。
xyj0663 2010-06-07
  • 打赏
  • 举报
回复
真是太感谢楼上几们兄弟了,说到遍历的问题,我今天在写遍历APN的接口,想把所有的接口名称和ID都返回到一个RArray里面,程序大体如下:
RArray<CCAPN*> CCHTTPEngine::GetAllApnName()
{
CCommsDatabase* commDb(CCommsDatabase::NewL(EDatabaseTypeIAP));
CleanupStack::PushL(commDb);

// Open IAP table
CCommsDbTableView* commView = commDb->OpenIAPTableViewMatchingBearerSetLC(
ECommDbBearerGPRS | ECommDbBearerWLAN,
ECommDbConnectionDirectionOutgoing);
CleanupStack::PushL(commView);

User::LeaveIfError(commView->GotoFirstRecord());
TInt err = KErrNone;

// Search all IAPs
do
{
CCAPN* apn = new (ELeave) CCAPN();
CleanupStack::PushL(apn);
commView->ReadTextL(TPtrC(COMMDB_NAME), apn->m_apnName);
commView->ReadUintL(TPtrC(COMMDB_ID), apn->m_id);
User::LeaveIfError(iApnList.Append(apn));
// CleanupStack::PopAndDestroy(apn);
err = commView->GotoNextRecord();

}while(err == KErrNone);

//CleanupStack::PopAndDestroy(commView);
//CleanupStack::PopAndDestroy(commDb);

return iApnList;
}

大家可以看到我把里面的几个PopAndDestroy都注释掉了,原因是要是我加上的话,调用这个接口就得不要想要的数据,程序在PopAndDestroy的时候就出错了,要是不加上倒是可以得到数据,各位帮忙看看是什么问题,有点不好意思,本来应该另开帖的,但事情比较多就在此问了,事后必结帖给分。
a14776584 2010-06-04
  • 打赏
  • 举报
回复
kelio兄一篇关于http的博客http://blog.csdn.net/kelio/archive/2010/03/18/5394078.aspx上就介绍了遍历所有的head域的方法,顺便转个楼主:
下面的代码则是使用THTTPHdrFieldIter类循环取得头部域数据:

RHTTPResponse resp = aTrans.Response();

RStringPool strP = aTrans.Session().StringPool();

RHTTPHeaders hdr = resp.GetHeaderCollection();

THTTPHdrFieldIter it = hdr.Fields();

TBuf<KMaxHeaderNameLen> fieldName16;

TBuf<KMaxHeaderValueLen> fieldVal16;

while (it.AtEnd() == EFalse)

{

// Get the name of the next header field

RStringTokenF fieldName = it();

RStringF fieldNameStr = strP.StringF(fieldName);

// Check it does indeed exist

THTTPHdrVal fieldVal;

if (hdr.GetField(fieldNameStr,0,fieldVal) == KErrNone)

{

...

// Display realm for WWW-Authenticate header

RStringF wwwAuth = strP.StringF(HTTP::EWWWAuthenticate, RHTTPSession::GetTable());

if (fieldNameStr == wwwAuth)

{

// check the auth scheme is 'basic'

RStringF basic = strP.StringF(HTTP::EBasic,RHTTPSession::GetTable());

RStringF realm = strP.StringF(HTTP::ERealm, RHTTPSession::GetTable());

THTTPHdrVal realmVal;

if (fieldVal.StrF() == basic)

// check the header has a 'realm' parameter

if (hdr.GetParam(wwwAuth, realm, realmVal) == KErrNone)

{

RStringF realmValStr = strP.StringF(realmVal.StrF());

fieldVal16.Copy(realmValStr);

Printf(_L("Realm is: %S\n"), &fieldVal16);

}

}

}

// Advance the iterator

++it;

}

a14776584 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xyj0663 的回复:]
谢谢楼上的,但我想把整个头的内容转成TDesC8&,并不是得到头里的某一个值,而是全部头内容, 具体要怎么转呢?
[/Quote]
这个貌似SDK没有这样的接口 一般是对某个头域感兴趣取哪个
RHTTPHeaders的IMPORT_C THTTPHdrFieldIter Fields() const;返回的THTTPHdrFieldIter应该可以遍历所有的head域,楼主可以试试
xyj0663 2010-06-03
  • 打赏
  • 举报
回复
谢谢楼上的,但我想把整个头的内容转成TDesC8&,并不是得到头里的某一个值,而是全部头内容, 具体要怎么转呢?
a14776584 2010-06-03
  • 打赏
  • 举报
回复
aTransaction.Response().GetHeaderCollection();
aTransaction为RHTTPResponse
xyj0663 2010-06-03
  • 打赏
  • 举报
回复
代理的我知道,我现在是要拿HTTP头的内容,不知道怎么写?
a14776584 2010-06-03
  • 打赏
  • 举报
回复
cmwap接入点是需要设置代理的
原理就是你的http请求发送到移动的代理网关,由它去帮你完成请求,然后它将请求结果返回给你
symbianguo 2010-06-03
  • 打赏
  • 举报
回复
在sdk中就有现成的例子,还有蓝牙的,全的,楼主可以去看看!!!!!!11
bsr2009 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 xyj0663 的回复:]
大家好,最近要写一个http下载的功能,找了NOKIA里的一个例子,但是不行,我主要的功能就是要判断APN,然后根据不同的APN进行下载文件或者网页,我是要把它封装成一个库,谁有这样的例子或者类似的,麻烦发我一个,里面的道理我基本明白,但就是调不出来,就是我用CMNET能返回网页,但用CMWAP就不行了
[/Quote]
cmwap返回的是网关数据,需要解析网关数据,并得到新的URL,再次进行连接。
请参考:http://topic.csdn.net/u/20100421/10/6dea516d-6688-4bfb-889d-3cf3035545f1.html
Defonds 2010-06-02
  • 打赏
  • 举报
回复
有个 java 版的。
xyj0663 2010-06-02
  • 打赏
  • 举报
回复
谢谢楼上的,还想问一下,我在HTTP请求后想把它的HTTP头传给用户用,
用了RHTTPResponse resp = aTransaction.Response();请问他的具体内容是放在哪里?刚学symbian,各位见笑了!

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧