成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Symbian學習筆記(17)

系統
如何使用Symbian中提供的WebService框架來SayHello。
如何使用Symbian中提供的WebService框架來SayHello。

  從SDK文檔中提供的資料來看這個接口似乎有點復雜,包括了Connection API、Description API和Manager API三套東西,此外還涉到了XML的解析之類的一些API的應用。

  閱讀了一下它的例子程序(S60Ex目錄下的AddressBook),讓我更暈乎了。怎么跟自己平時使用的WebService不一樣了?

  在SDK文檔中關于CSenServiceConnection有這么一段描述:

  Web Services包括兩種不同的框架模型:

  1. Identity Based Web Services Framework (ID-WSF). The framework ID for this is KDefaultIdWsfFrameworkID ("ID-WSF").

  2. Basic Web Services Framework. Framework ID is KDefaultBasicWebServicesFrameworkID ("WS-I").

  如果提供了Contract則缺省使用ID-WSF。

  首先用.NET做一個簡單的WebServices來測試,就用缺省產生的HelloWorld吧。很簡單的,它的SOAP描述如下:

view plaincopy to clipboardprint?
<PRE class=csharp name="code">POST /uim/PService.asmx HTTP/1.1     

Host: localhost   

Content-Type: text/xml; charset=utf-8     

Content-Length: length     

SOAPAction: "urn:pservice:helloworld"   

<?xml version="1.0" encoding="utf-8"?>   

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   
<soap:Body>   

<HelloWorld xmlns="http://sharetop/pservice" />   

</soap:Body>   

</soap:Envelope>   

HTTP/1.1 200 OK     

Content-Type: text/xml; charset=utf-8     

Content-Length: length     

<?xml version="1.0" encoding="utf-8"?>   

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   

  <soap:Body>   

<HelloWorldResponse xmlns="http://sharetop/pservice">   
<HelloWorldResult>string</HelloWorldResult>   
  </HelloWorldResponse>   

  </soap:Body>   

</soap:Envelope></PRE>  

view plaincopy to clipboardprint?

POST /uim/PService.asmx HTTP/1.1     
Host: localhost
Content-Type: text/xml; charset=utf-8     

Content-Length: length     

SOAPAction: "urn:pservice:helloworld"   

<?xml version="1.0" encoding="utf-8"?>   

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">     

<soap:Body>     

<HelloWorld xmlns="http://sharetop/pservice" />     

</soap:Body>     

</soap:Envelope>     

HTTP/1.1 200 OK     

Content-Type: text/xml; charset=utf-8     

Content-Length: length   

<?xml version="1.0" encoding="utf-8"?>     

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">     

  <soap:Body>     

<HelloWorldResponse xmlns="http://sharetop/pservice">     

<HelloWorldResult>string</HelloWorldResult>     

</HelloWorldResponse>     

</soap:Body>   

</soap:Envelope>  

POST /uim/PService.asmx HTTP/1.1

Host: localhost

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "urn:pservice:helloworld"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <HelloWorld xmlns="http://sharetop/pservice" />
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <HelloWorldResponse xmlns="http://sharetop/pservice">
      <HelloWorldResult>string</HelloWorldResult>
    </HelloWorldResponse>
  </soap:Body>
</soap:Envelope>

  下面我們自己來做一個WS的客戶端實例吧。先用向導生成一個HelloWorld應用,為了研究方便,我們不打算做什么界面,所有的輸出都通過LOG輸出到日志文件。

  為了編碼方便,我們增加一個類WebEngine,它應該派生于CSenBaseFragment和MSenServiceConsumer。聲明如下:

 

view plaincopy to clipboardprint?

class CWebEngine : public CSenBaseFragment, public MSenServiceConsumer     

{     

public:   

  ~CWebEngine();     
static CWebEngine* NewL();     
  static CWebEngine* NewLC();     

void ConnectL();   

void SayHello();     

   //from MSenServiceConsumer   

  virtual void HandleMessageL(const TDesC8& aMessage);   

   virtual void HandleErrorL(const TInt aErrorCode,const TDesC8& aError);   

  virtual void SetStatus(const TInt aStatus);     

protected:     

//from CSenBaseFragment   

virtual void StartElementL(const TDesC8& aNsUri, const TDesC8& aLocalName, const TDesC8& aQName, const Xml::RAttributeArray& aAttrs);  

  virtual void EndElementL(const TDesC8& aNsUri,  const TDesC8& aLocalName, const TDesC8& aQName);   

private:   

CWebEngine();   

void ConstructL();     

public:   

CHelloWorldResult * delegate;   

private:     

  CSenServiceConnection* iConnection;   

CSenXmlServiceDescription* iSession;     

CSenXmlReader* iXmlReader;     

};  

class CWebEngine : public CSenBaseFragment, public MSenServiceConsumer

{

public:

        ~CWebEngine();

        static CWebEngine* NewL();

        static CWebEngine* NewLC();

        void ConnectL();

        void SayHello();

        //from MSenServiceConsumer

        virtual void HandleMessageL(const TDesC8& aMessage);

        virtual void HandleErrorL(const TInt aErrorCode,const TDesC8& aError);

        virtual void SetStatus(const TInt aStatus);

protected:

        //from CSenBaseFragment

        virtual void StartElementL(const TDesC8& aNsUri, const TDesC8& aLocalName, const TDesC8& aQName, const Xml::RAttributeArray& aAttrs);                  

        virtual void EndElementL(const TDesC8& aNsUri,  const TDesC8& aLocalName, const TDesC8& aQName);

private:

        CWebEngine();

        void ConstructL();

public:

        CHelloWorldResult * delegate;

private:

        CSenServiceConnection* iConnection;

        CSenXmlServiceDescription* iSession;       

        CSenXmlReader* iXmlReader;

};

  除了實現兩個父類的方法以外,還要增加ConnectL()用來連接,SayHello()用來調用遠程方法。那個delegate是一個 CHelloWorldResult類的實例,這個類同樣派生于CSenDomFragment,說明它對應一段XML內容,我們用它來處理結果,就是那個HelloWorldResponse標簽下的內容。

  這個WebEngine的實現邏輯是:先在ConnectL中初始化WS客戶端,在SetStatus回調中取當前狀態值如果為 KSenConnectionStatusReady ,則可以調用SayHello去執行那個WS的方法,然后,在HandleMessageL回調中將得到的結果(XML內容的字節流)去解析一下,解析 XML的回調就是那兩個StartElement和EndElement。

【編輯推薦】

  1. Symbian每6個月發布一款新開源操作系統
  2. 微軟建WindowsMarketplace 完善智能機平臺
  3. 大力模仿Android 傳微軟WM6.5可裝插件
責任編輯:龐桂玉 來源: it168
相關推薦

2009-04-12 08:59:05

Symbian諾基亞移動OS

2009-04-12 09:00:08

Symbian諾基亞移動OS

2009-04-12 09:01:05

Symbian諾基亞移動OS

2009-04-12 09:02:32

Symbian諾基亞移動OS

2009-04-12 09:06:00

Symbian諾基亞移動OS

2009-04-12 08:57:50

Symbian諾基亞移動OS

2009-04-12 08:55:18

Symbian諾基亞移動OS

2009-04-12 08:36:09

Symbian諾基亞移動OS

2009-04-12 08:51:50

Symbian諾基亞移動OS

2009-04-12 09:07:17

Symbian諾基亞移動OS

2009-04-12 08:45:32

Symbian諾基亞移動OS

2009-04-12 08:48:47

Symbian諾基亞移動OS

2009-04-12 08:50:08

Symbian諾基亞移動OS

2009-04-12 08:46:43

Symbian諾基亞移動OS

2009-04-12 08:52:52

Symbian諾基亞移動OS

2012-05-24 09:38:08

Symbian

2010-10-27 13:14:24

Symbian

2010-07-12 09:34:59

Symbian開發

2010-07-02 09:54:32

Symbian開發

2009-05-06 08:42:03

SymbianS60移動OS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产黄色在线 | 91国自视频 | 午夜a级理论片915影院 | 在线免费观看黄色av | 黄色一级大片在线免费看产 | 亚洲一区二区三区在线观看免费 | 亚洲 欧美 另类 综合 偷拍 | 91视频播放 | 亚洲国产高清在线观看 | 久久久久国产 | 欧美男人天堂 | 国产一区三区视频 | 91人人爽 | 69电影网 | 欧美日韩专区 | 日韩成人 | 国产精品国产三级国产播12软件 | 蜜桃视频在线观看免费视频网站www | 颜色网站在线观看 | 国产成人免费视频网站高清观看视频 | 亚洲不卡在线观看 | 久久99国产精品 | 毛片网在线观看 | 精品电影 | 亚洲精品国产综合区久久久久久久 | 精产国产伦理一二三区 | 亚洲精品久久嫩草网站秘色 | 黄色在线观看网址 | 国产精品视频中文字幕 | 人人九九精 | 久久久久久久一区 | 日本国产一区二区 | 黄色av网站在线观看 | 国产一区二区三区在线视频 | 九色在线视频 | 日日天天 | 中国一级特黄真人毛片 | 成人在线免费视频观看 | 亚洲国产精品视频一区 | 黄频免费| 久久久久黄色 |