使用到的类:

RHTTPTransaction :
http处理类。包括请求和应答。通过RHTTPSession::OpenTransactionL()创建并打开。

RSocketServ :
socket服务器类。RSocketServ::connect()用来建立客户端到socket服务器的进程之间的通信。

RConnection :
网络连接管理接口类。

RHTTPSession:
HTTP会话类。

RStringPool:
字符串池类。存放HTTP字符串表,包括:方法名字,包头名字等等。

RHTTPConnectionInfo:
HTTP连接类。用于设置和获得HTTP的一些属性值。

MHTTPTransactionCallback:
观察器类,类似于CBrCtlInterface观察器MBrCtlLoadEventObserver
回调函数MHFRunL:
void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent )

回调函数MHFRunError:
TInt MHFRunError( TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
使用时,继承该类并实现其回调函数,在回调函数MHFRunL中实现对HTTP 处理中各个事件的操作。
在回调函数MHFRunL中实现对传输出错的处理。
使用RHTTPSession::OpenTransactionL()将自身设置为RHTTPSession对象的观察器,当发生各种传输事件或传输出错时,会自动调用回调函数。

MHTTPAuthenticationCallback:
观察器类,用于需要身份认证(authentication)的http请求。

内联函数InstallAuthenticationL:
void InstallAuthenticationL(RHTTPSession aSession)
用于将自身设置为aSession得回调函数。传入的实参必须是一个已经OpenL()的RHTTPSession。

回调函数GetCredentialsL:
TBool GetCredentialsL(const TUriC8& aURI, RString aRealm, RStringF aAuthenticationType,
RString& aUsername, RString& aPassword)
使用时,继承该类并实现其回调函数,在该回调函数中将用户名和密码传入回调函数参数。
通过内联函数设置自身为RHTTPSession对象的观察器,当http请求需要authentication时候,会自动调用回调函数。

其他相关类:RHTTPResponse RHTTPHeaders THTTPHdrFieldIter

HTTP请求及连接步骤:

1.创建会话
iSession.OpenL()
iHTTPAuthenticationObserver->InstallAuthenticationL( iSession );

2.如果存在已建立的transaction。关闭transaction。
iTransaction.Close();

3.创建并打开与socket服务器的连接
iSocketServ.Connect()
iConnection.Open(iSocketServ)
iConnection.Start()

4.设置HTTP连接
iSession.ConnectionInfo().SetPropertyL ( iSession.StringPool().StringF(HTTP::EHttpSocketServ, RHTTPSession::GetTable() ), THTTPHdrVal (iSocketServ.Handle()) )
iSession.ConnectionInfo().SetPropertyL ( iSession.StringPool().StringF(HTTP::EHttpSocketConnection, RHTTPSession::GetTable() ), THTTPHdrVal (REINTERPRET_CAST(TInt, &(iConnection))));

5.打开传输
TUriParser8 uri;
uri.Parse( aUri );
RStringF method = iSession.StringPool().StringF( HTTP::EGET, RHTTPSession::GetTable());
iTransaction = iSession.OpenTransactionL( uri, *iHTTPTransactionObserver, method );

6.设置请求包头
RStringF valStr = iSession.StringPool().OpenFStringL( KUserAgent);
THTTPHdrVal val( valStr );
RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
hdr.SetFieldL( iSession.StringPool().StringF( HTTP::EUserAgent, RHTTPSession::GetTable() ), val );

RStringF valStr = iSession.StringPool().OpenFStringL( KAccept );
THTTPHdrVal val( valStr );
RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
hdr.SetFieldL( iSession.StringPool().StringF( HTTP::EAccept, RHTTPSession::GetTable() ), val );

7.提交传输
iTransaction.SubmitL();

8.HTTP连接的关闭:
iTransaction.Close();

两个观察器的实现:

view plaincopy to clipboardprint?
void CHTTPTransactionObserver::MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent )
{
switch ( aEvent.iStatus )
{
case THTTPEvent::EGotResponseHeaders:
{
//................................
//................................
break;
}
case THTTPEvent::EGotResponseBodyData:
{
//................................
//................................
TPtrC8 dataChunk;
aTransaction.Response().Body()->GetNextDataPart( dataChunk );
body->ReleaseData();
break;
}
case THTTPEvent::ESucceeded:
{
//................................
//................................
aTransaction.Close();
break;
}
case THTTPEvent::EFailed:
{
//................................
//................................
aTransaction.Close();
break;
}
default:
{
//................................
//................................
break;
}
}

}

TInt CHTTPTransactionObserver::MHFRunError( TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
{
//................................
//................................
}

TBool CHTTPAuthentication::GetCredentialsL( const TUriC8& aUri,
RString aRealm,
RStringF aAuthenticationType,
RString& aUsername,
RString& aPassword)
{
TRAPD(err, aUsername = aRealm.Pool().OpenStingL( KUserName));
if( !err )
{
TRAPD( err, aPassword = aRealm.Pool().OpenStingL( KPassword ) );
if( !err )
return ETRUE;
}
return EFalse;
}

symbian下的http连接相关推荐

  1. windows7 telnet linux,Windows下通过Telnet连接linux

    <Windows下通过Telnet连接linux>由会员分享,可在线阅读,更多相关<Windows下通过Telnet连接linux(1页珍藏版)>请在人人文库网上搜索. 1.W ...

  2. Win8.1下Node.js连接oracle

    2019独角兽企业重金招聘Python工程师标准>>> Win8.1下Node.js连接oracle 1. 安装oracle(10g.11g). 2. 安装microsoft vis ...

  3. freebsd php 编译 mysql sql2005_问下:Freebsd下用php连接ms sql server

    你的位置: 问答吧 -> PHP -> 问题详情 问下:Freebsd下用php连接ms sql server 大家都怎么连接的,,,效率如何? 作者: james.liu 发布时间: 2 ...

  4. 连接定义点作用_最坏情况下最优连接(Worst-Case Optimal Joins)

    所谓最坏情况下最优连接(Worst-Case Optimal Joins),是一项关于数据库中连接操作的最新技术.给定若干表{R1, R2, ..., Rn},在它们之上的多表连接所能得到结果的数量上 ...

  5. CentOS下与Apache连接的PHP多版本共存方案实现详解

    这篇文章主要介绍了CentOS下与Apache连接的PHP多版本共存方案实现,针对mod_fcgi模块的配置作了一些说明,需要的朋友可以参考下 在apache下整合fastCGI模式运行的php-fp ...

  6. HDFS HA模式下支持只连接其中Active的NameNode

    HDFS HA模式下支持只连接其中Active的NameNode:

  7. iptables下开放ftp连接端口

    iptables下开放ftp连接端口 转载 2014年04月19日 10:04:27 2275 iptables 就是linux系统的防火墙,很多人安装iptables之后重启服务器发现网站无法访问, ...

  8. linux下php远程连接mysql_Linux下PHP远程连接Oracle数据库 | 系统运维

    说明: Web服务器环境:CentOS 5.8 32位+Nginx 1.2.3+Mysql 5.5.27+php 5.3.16 Web服务器IP:192.168.21.149 php源码编译目录:/u ...

  9. 计算机连接拒绝访问,Win10系统下Windows无法连接到打印机,拒绝访问的解决办法...

    我们在办公的时候,经常会使用打印机共享的功能,近期有一位Win10用户在共享打印机的时候,系统提示了"Windows无法连接到打印机,拒绝访问"的错误.原因是用户和组没有every ...

最新文章

  1. 联想计算机无线网络设置密码,联想路由器怎么设置密码
  2. MIT-THU未来城市创新网络即将和你见面!
  3. 白盒测试工具 - sonar报告常见示例分析,sonar代码质量问题分析演示
  4. Netty 和 RPC 框架线程模型分析
  5. deepin v20.1折腾美化之Plank dock任务栏安装
  6. error:cannot load driver JL2CM3.dll
  7. Java入门算法(数据结构篇)丨蓄力计划
  8. 南京铁道学院计算机应用,南京铁道职业技术学院交通运营管理专业怎么样
  9. H.264视频编码在VC++.Net中的实现
  10. android 部分区域点击,Android编程实现ListView中item部分区域添加点击事件功能
  11. c语言作业统计字符,C语言统计字符数(示例代码)
  12. Android架构MVC,MVP与MVVM及MVPVM对比分析
  13. winfrom实现,斑马Gk888t打印机,连续打印二维码
  14. 【POJ 3580】 SuperMemo
  15. 通过内容关键词查找文件
  16. MATLAB小技巧整理-那些你必须得知道的matlab技巧
  17. SpinalNet: Deep Neural Network with Gradual Input
  18. (私人收藏)蓝色抽象科技感工作计划PPT模板
  19. 树莓派3B+安装wiringpi和bcm库
  20. 教你怎么使用Python对word文档进行操作

热门文章

  1. Android 开发 之 glide加载图片
  2. 1364: 向Z同学学习
  3. python分析6625条视频,揭秘“打工人”凭啥刷爆全网!
  4. 【软件相关】如何用PS调整图片的亮度
  5. 与图像处理和计算机视觉有关的书籍和论文
  6. 禁止域用户更改系统时间和时区
  7. python做什么副业_适合上班族的25个副业,做什么副业好
  8. web自动化笔记一:元素定位的八种方式
  9. ppt中浏览网页的问题
  10. 移宇科技全院血糖管理系统与闭环人工胰腺系统助力患者血糖管理