当前位置:编程学习 > wap >>

谁有symbian http 下载例子

大家好,最近要写一个http下载的功能,找了NOKIA里的一个例子,但是不行,我主要的功能就是要判断APN,然后根据不同的APN进行下载文件或者网页,我是要把它封装成一个库,谁有这样的例子或者类似的,麻烦发我一个,里面的道理我基本明白,但就是调不出来,就是我用CMNET能返回网页,但用CMWAP就不行了 --------------------编程问答-------------------- 有个 java 版的。 --------------------编程问答--------------------
引用楼主 xyj0663 的回复:
大家好,最近要写一个http下载的功能,找了NOKIA里的一个例子,但是不行,我主要的功能就是要判断APN,然后根据不同的APN进行下载文件或者网页,我是要把它封装成一个库,谁有这样的例子或者类似的,麻烦发我一个,里面的道理我基本明白,但就是调不出来,就是我用CMNET能返回网页,但用CMWAP就不行了

cmwap返回的是网关数据,需要解析网关数据,并得到新的URL,再次进行连接。
请参考:http://topic.csdn.net/u/20100421/10/6dea516d-6688-4bfb-889d-3cf3035545f1.html --------------------编程问答-------------------- 谢谢楼上的,还想问一下,我在HTTP请求后想把它的HTTP头传给用户用,
用了RHTTPResponse resp = aTransaction.Response();请问他的具体内容是放在哪里?刚学symbian,各位见笑了! --------------------编程问答-------------------- cmwap接入点是需要设置代理的
原理就是你的http请求发送到移动的代理网关,由它去帮你完成请求,然后它将请求结果返回给你 --------------------编程问答-------------------- 代理的我知道,我现在是要拿HTTP头的内容,不知道怎么写? --------------------编程问答-------------------- aTransaction.Response().GetHeaderCollection();
aTransaction为RHTTPResponse  --------------------编程问答-------------------- 谢谢楼上的,但我想把整个头的内容转成TDesC8&,并不是得到头里的某一个值,而是全部头内容, 具体要怎么转呢? --------------------编程问答-------------------- 在sdk中就有现成的例子,还有蓝牙的,全的,楼主可以去看看!!!!!!11 --------------------编程问答--------------------
引用 7 楼 xyj0663 的回复:
谢谢楼上的,但我想把整个头的内容转成TDesC8&,并不是得到头里的某一个值,而是全部头内容, 具体要怎么转呢?

这个貌似SDK没有这样的接口  一般是对某个头域感兴趣取哪个
RHTTPHeaders的IMPORT_C THTTPHdrFieldIter Fields() const;返回的THTTPHdrFieldIter应该可以遍历所有的head域,楼主可以试试 --------------------编程问答-------------------- 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;

 }

--------------------编程问答-------------------- 真是太感谢楼上几们兄弟了,说到遍历的问题,我今天在写遍历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的时候就出错了,要是不加上倒是可以得到数据,各位帮忙看看是什么问题,有点不好意思,本来应该另开帖的,但事情比较多就在此问了,事后必结帖给分。 --------------------编程问答-------------------- 上面的问题已经解决,呵呵。。。 --------------------编程问答-------------------- 请问如何判断返回的内容是移动的拦截页? --------------------编程问答-------------------- 关注一下。正好最近也要用这个方面的东西。 --------------------编程问答-------------------- 移动的拦截页的Content-Type: application/vnd.wap.wmlc可以作为特征之一 --------------------编程问答-------------------- 在官方网站上有个程序包,是专说这方面的。正好前两天用过。也是CSDN的网友介绍的。
补充:移动开发 ,  Symbian
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,