使用到的类:
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连接时经常用到。
这是Qt Creator连接Symbian手机所需的trk文件,有好几个版本,具体参考: http://blog.csdn.net/htttw/article/details/7632122 Nokia 5230的版本是s60_5_0_app_trk_3_2_7.sisx
可以通过http连接到百度MP3,下载到本地并在屏幕显示新歌top10
symbian中关于http连接的例子 symbian中关于http连接的例子
C++版本的,但很多错误代码(比如Http连接的返回值等)和Java是通用的。
7.1.3 管理GPRS网络连接界面 7.1.4 Socket通信 7.1.5 名字/地址解析与IPv6 7.1.6 网络安全性与Secure Socket 7.1.7 HTTP协议 7.1.8 使用模拟器中的网络功能 7.2 电话功能 7.2.1 电话API基本功能 ...
7.1.3 管理GPRS网络连接界面 7.1.4 Socket通信 7.1.5 名字/地址解析与IPv6 7.1.6 网络安全性与Secure Socket 7.1.7 HTTP协议 7.1.8 使用模拟器中的网络功能 7.2 电话功能 7.2.1 电话API基本功能 ...
如果需要让Qt Creator连接PC,下载此文件不可或缺: 具体参考:http://blog.csdn.net/htttw/article/details/7632122
塞班相关信息http://bbs.dospy.com/thread-5086709-1-193-4.html 安装说明:先安装Pc端_mobiola_webcam_3_0_11.exe文件后安装Webcam_v3.0.11汉化.exe会提示覆盖,点确定。 再安装手机端_webcam_s60_v_3_0.sis(此文件...
Symbian640 软件类别: 国产软件 / 分享工具 适用机型:Nokia 5300/6126/6131/6131 <br>NFC/6133/6233/6234/6234/6265/6265i/6267/6270/6275/6275i/6280/6282/6288/6300/6500 classic/6500 <br>slide/...
诺基亚N85的ROM固件包因为太大,没法上传,在这里提供一个已经试验成功的下载网址http://xz.qupan.cc/down/123639808_6275847.html,大家可以自己下一下。 诺基亚N85的固件信息是RM335 30.002版本,网上提供30.019和...
支持双向审计,特别是返回字段和结果、执行状态、返回行数、执行时长等内容, 并能够根据返回结果设置审计策略,要求在不连接被审计数据库情况下完成。 支持HTTP请求审计,提取URL POST/GETf直、cookie、操作系统...
7.0s/V8.0 (Symbian60二版) 软件类别: 国产软件 / 分享工具 适用机型:诺基亚→3230/6260/6600/6630/6620/6670/6680/6681/6682/7610/N70/N72/N90 松下→X700/X800 三星→SDH-D720/SGH-Z600 <br>酷极...
<br>软件大小: 374KB 软件语言: 简体中文 应用平台: Symbian60_V6.1 Screen Resolution(s): 176 x 208 176 x 220 (Symbian60一版) 软件类别: 国产软件 / 分享工具 适用机型: ...
官方网址:http://www.logomanager.co.uk 软件汉化:少禹 使用说明:直接安装或解压后安装即可,也可作为汉化补丁使用。 ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ 此版本支持大多数...
<br>软件大小: 374KB 软件语言: 简体中文 应用平台: Symbian60_V9.1 Screen Resolution(s): 176 x 208 208 x 208 240 x 320 320 x 240 352 x 416 (Symbian60三版) 软件类别: ...
Apache httpd的S60 / Symbian端口和连接解决方案,可从Internet对移动电话进行HTTP访问。 有关安装和其他信息,请单击右侧的“项目网站”链接,或从菜单中选择“项目”->“网站”。
91手机助手是网龙公司推出的智能手机管理软件,下载吧提供最新苹果91手机助手下载,不但支持苹果iphone手机,还是一款全面支持Android、Symbian S60、iPhone、Wince、Windows Mobile五大智能手机系统的PC端管理软件...
×gSOAP 支持 HTTP/1.0, HTTP/1.1 保持连接, 分块传输及基本验证。 ×gSOAP 支持 SOAP 单向消息。 ×gSOAP 包含一个 WSDL 生成器,便于web服务的发布。 ×gSOAP 包含一个WSDL解析器(将WSDL转换为gSOAP...