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

Symbian 中的 Http 开发详解

 2010-03-24 17:22:00 来源:WEB开发网   
核心提示:1 打开一个会话Http客户端会话由声明一个RHttpSession对象并调用它的OpenL()方法开始,RHTTPSession iSession;iSession.OpenL();2 创建一个事务要创建一个新的事务,Symbian 中的 Http 开发详解,客户端必须指定URI、HTTP请求方法和一个用于接收事务处

1 打开一个会话

Http客户端会话由声明一个RHttpSession对象并调用它的OpenL()方法开始。

RHTTPSession iSession;

iSession.OpenL();

2 创建一个事务

要创建一个新的事务,客户端必须指定URI、HTTP请求方法和一个用于接收事务处理期间的事件的callback对象,该回调对象必须继承自 MHTTPTransactionCallBack接口。RHTTPTransaction句柄由唯一地定义新事物的会话返回。

void CHttpClient::InvokeHttpMethodL(const TDesC8& aUri, RStringF aMethod)

{

...

TUriParser8 uri;

uri.Parse(aUri);

RHTTPTransaction trans = iSession.OpenTransactionL(uri, *iTransObs, aMethod);

...

};

OpenTransactionL()的第二个参数表示回调对象。

3 设置请求头

在打开了事务之后,如果有需要,客户端就要设置请求头。但是,对于简单事务来说,请求头的使用是可选的,因为HTTP/1.1的请求头会被自动生成。

可以使用RHTTPHeaders类访问与事务请求或事务响应相关的头部。该句柄是从事务相关的RHTTPRequest或 RHTTPResponse对象中取得的。

RHTTPHeaders hdr = trans.Request().GetHeaderCollection();

// Add headers appropriate to all methods

SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);

SetHeaderL(hdr, HTTP::EAccept, KAccept);

...

void CHttpClient::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)

{

RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue);

THTTPHdrVal val(valStr);

aHeaders.SetFieldL(iSession.StringPool().StringF(aHdrField), val);

valStr.Close();

}

头部域类型是使用HTTP名字空间的枚举来指定,如:HTTP::EUserAgent。该类用于拥有头部域的值:THTTPHdrVal,就像一个C++联合类型,在其中它可以拥有不同的数据类型。

4 启动事务

设置了头部域后,一个不带请求体的简单事务就可以立即启动了。但这只是适用于诸如GET、HEAD和TRACE等HTTP方法的情况。而不适用于另外一些请求中包括主体的HTTP方法,如POST。客户端向其发送请求体数据的数据提供者必须在事务启动之前关联到事务上。

1 2 3 4  下一页

Tags:Symbian Http 开发

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