使用到的类:
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();
两个观察器的实现:
-
void
CHTTPTransactionObserver::MHFRunL(RHTTPTransactionaTransaction,
const
THTTPEvent&aEvent)
-
{
-
switch
(aEvent.iStatus)
-
{
-
case
THTTPEvent::EGotResponseHeaders:
-
{
-
-
-
break
;
-
}
-
case
THTTPEvent::EGotResponseBodyData:
-
{
-
-
-
TPtrC8dataChunk;
-
aTransaction.Response().Body()->GetNextDataPart(dataChunk);
-
body->ReleaseData();
-
break
;
-
}
-
case
THTTPEvent::ESucceeded:
-
{
-
-
-
aTransaction.Close();
-
break
;
-
}
-
case
THTTPEvent::EFailed:
-
{
-
-
-
aTransaction.Close();
-
break
;
-
}
-
default
:
-
{
-
-
-
break
;
-
}
-
}
-
-
}
-
-
-
TIntCHTTPTransactionObserver::MHFRunError(TIntaError,RHTTPTransactionaTransaction,const
THTTPEvent&aEvent)
-
{
-
-
-
}
-
-
-
TBoolCHTTPAuthentication::GetCredentialsL(const
TUriC8&aUri,
-
RStringaRealm,
-
RStringFaAuthenticationType,
-
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连接是常见的需求,尤其在构建网络通信功能时。"Symbian HTTP连接例子"是一个针对Symbian S60平台的示例项目,它展示了如何使用S60 Platform HTTP Client API来实现HTTP连接...
在IT行业中,网络通信是至关重要的,而HTTP(超文本传输协议)作为互联网上应用最为广泛...通过对这些文件的详细分析和学习,开发者可以更好地理解和掌握Symbian系统下的网络编程,为构建自己的网络应用打下坚实基础。
在这个场景中,我们看到一个标题为“symbian http通讯”,描述中提到通过HTTP连接到百度MP3服务,下载音乐到本地设备,并在屏幕上展示新歌的前10名。这涉及到多个技术点,我们将详细讨论这些知识点。 1. **HTTP协议...
这是Qt Creator连接Symbian手机所需的trk文件,有好几个版本,具体参考: http://blog.csdn.net/htttw/article/details/7632122 Nokia 5230的版本是s60_5_0_app_trk_3_2_7.sisx
HTTP引擎的设计和实现对于Symbian平台上的应用程序,特别是那些需要网络连接的应用程序(如浏览器、邮件客户端等),至关重要。 在Symbian系统中,HTTP通信通常基于其C++类库,这包括了`HTTPEngine.cpp`和`...
2. **网络编程接口**:Symbian提供了一系列网络编程接口,如RSocketServ类用于管理套接字服务,RSocket类则用于实际的网络连接。在S60平台上,HTTP请求通常通过TCP/IP套接字进行。 3. **HTTP请求构造**:HTTP请求由...
1. **环境配置**:讲解如何安装Symbian SDK,设置Eclipse或 Carbide.c++等开发工具,以及如何配置模拟器或连接真实设备进行测试。 2. **基础概念**:介绍Symbian的文件系统、进程与线程模型、内存管理机制,以及...
总的来说,Symbian的HTTP实现涉及网络会话的创建、HTTP连接的建立、请求与响应的处理等多个环节,每个环节都需要精确的操作和有效的错误处理。理解和掌握这些知识点,对于在Symbian系统上开发网络应用至关重要。
3. **网络通信**:塞班系统支持TCP/IP协议栈,DEMO可能展示如何进行HTTP请求、数据传输和网络连接管理。 4. **设备访问**:塞班系统允许访问硬件资源,如GPS、蓝牙、摄像头等。DEMO可能包含如何读取和操作这些设备...
在Symbian上,我们需要创建多个线程,每个线程负责一个独立的HTTP连接。这样可以充分利用网络带宽,减少整体下载时间。 4. **文件分块**: 在多线程下载中,大文件会被分割成多个小块,每个线程负责下载其中一块。...
离线地图功能是百度地图塞班版的一大亮点,它允许用户在没有网络连接的情况下仍能访问地图数据,这对于网络信号不稳定或出国旅行时非常实用。以下是对百度地图塞班版离线地图安装流程的详细解析与操作指南。 ### ...
**Symbian HTTP Server 框架详解** 在移动设备领域,Symbian操作系统曾经是主导力量之一,尤其是在智能手机市场。对于开发人员来说,构建在Symbian平台上的应用程序和服务至关重要,而Symbian HTTP Server就是这样...
总结,这个压缩包提供了学习和理解HTTP协议的基础材料,包括HTTP的基本概念、请求响应机制、常见方法、HTTP/1.1与HTTP/2的区别以及在Symbian系统中的应用。通过分析www.pudn.com.txt和HTTP这两个文件,我们可以深入...
1. **网络通信**:应用需要连接到互联网,通常是通过HTTP或HTTPS协议与天气预报服务器交互,获取XML或JSON格式的天气数据。开发者需要理解和使用Symbian的网络编程接口,如RSocket或RHTTPProtocol组件。 2. **数据...
Qt for Symbian是Nokia推出的一个用于开发Symbian平台应用程序的框架,它结合了Qt的跨平台特性和Symbian的操作系统优势,为开发者提供了丰富的API和工具集,以便在S60设备上创建功能强大的用户界面和应用程序。...
HTTP协议是基于TCP/IP协议栈的,所以我们在建立HTTP连接时,实际上是在创建一个TCP套接字。 在HTTP客户端编程中,你需要完成以下几个关键步骤: 1. **初始化网络环境**:使用`CEikonEnv::Static()`获取Eikon环境,...
在Symbian中,我们可以使用`RHTTPSession`类来建立与服务器的连接,并通过`RHTTPRequestEntity`类构造请求。以下是一个基本的上传流程: 1. 初始化`RHTTPSession`:创建一个`RHTTPSession`对象,设置服务器的URL、...
Symbian系统支持GPRS、EDGE、3G等多种网络连接方式,开发者可以利用Symbian的API实现数据传输、HTTP请求、电子邮件等功能。 ### 7. 本地化和国际化 由于Symbian系统全球范围内广泛使用,所以本地化和国际化是重要的...
Symbian以其高效、安全和可扩展性而闻名,支持多种网络连接方式,如GSM、GPRS、EDGE、3G等,同时提供了丰富的API接口供开发者进行应用开发。 二、Symbian系统架构 Symbian操作系统采用微内核设计,包含四个主要组件...
本篇文章将详细介绍Symbian OS中端到端的HTTP API应用实例,帮助开发者更好地理解和掌握Symbian系统下的网络编程。 一、Symbian OS 网络通信基础 Symbian OS 提供了丰富的网络功能,其中包括TCP/IP协议栈和HTTP...