WEB开发网
开发学院手机开发Symbian 开发 Symbian 中的 Http 开发详解 阅读

Symbian 中的 Http 开发详解

 2010-03-24 17:22:00 来源:WEB开发网   
核心提示:当事务准备启动时,客户端调用RHTTPTransaction::SubmitL()表示请求应该被提交了,Symbian 中的 Http 开发详解(2),...// submit the transactiontrans.SubmitL();// Start the scheduler, once the transac

当事务准备启动时,客户端调用RHTTPTransaction::SubmitL()表示请求应该被提交了。

...

// submit the transaction

trans.SubmitL();

// Start the scheduler, once the transaction completes or is cancelled //on an error the scheduler will be stopped in the event handler

CActiveScheduler::Start();

5 接收事务事件

当客户端从HTTP服务器收到数据,事件也会被生成并通过会话过滤器传回到客户端。事件到达客户端时,HTTP会唤醒事务回调对象,也即 MHFRunL (RHTTPTransaction aTransaction, const THTTPEvent &aEvent)方法。

在该方法中可通过以下方式利用事务响应取得响应状态码和文本描述:

case THTTPEvent::EGotResponseHeaders:

{

RHTTPResponse resp = aTransaction.Response();

TInt status = resp.StatusCode();

RStringF statusStr = resp.StatusText();

下面的代码则是使用THTTPHdrFieldIter类循环取得头部域数据:

RHTTPResponse resp = aTrans.Response();

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

RHTTPHeaders hdr = resp.GetHeaderCollection();

THTTPHdrFieldIter it = hdr.Fields();

TBuf fieldName16;

TBuf 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());

上一页  1 2 3 4  下一页

Tags:Symbian Http 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接