嵌入式環(huán)境下Web Service技術(shù)的實(shí)現
SOAP在HTTP上的遠程調用的具體實(shí)現過(guò)程大致如下:客戶(hù)端通過(guò)SOAP工具生成基于XML文檔的SOAP消息,在該SOAP消息里包含有客戶(hù)請求的服務(wù)名稱(chēng)及調用服務(wù)程序所需的參數,并使用HTTPPOST方法通過(guò)網(wǎng)絡(luò )向應用程序所在的服務(wù)端發(fā)送SOAP請求;另一方面,當服務(wù)端接到HTTP信息之后,又從中提取出SOAP消息,啟動(dòng)X(jué)ML文檔解析器進(jìn)行解析,獲取客戶(hù)需要調用的方法名及其參數,以此來(lái)調用相應的服務(wù)程序,之后以類(lèi)似的方法將運行結果打包成SOAP消息返回給客戶(hù),完成應用程序的遠程調用。
2.2.1 HTTP協(xié)議的簡(jiǎn)單實(shí)現
HTTP是基于請求/響應模式的協(xié)議,客戶(hù)端的通信過(guò)程一般分為4個(gè)步驟:建立連接、發(fā)送請求消息、接收響應信息、關(guān)閉連接。HTTP定義了眾多請求方法(Method),如GET,POST,HEAD,DELETE等,由于SOAP主要使用POST方法來(lái)發(fā)送請求,因此HTTP的實(shí)現集中在POST方法上。SOAP協(xié)議中規定POST請求至少包含兩個(gè)HTTP頭,Content-Type(定義MIME類(lèi)型)和Content-Length(定義消息的長(cháng)度)。
例如:
POST/test HTTP/1.1
Content-Type:application/soap+xml;
Content-Length:250
如圖2所示,程序利用1wIP提供的API創(chuàng )建一個(gè)監聽(tīng)連接,綁定到HTTP的80號熟知端口上,當接收到POST請求時(shí)檢查必要的HTTP頭,之后開(kāi)始接收HTTP正文(SOAP請求),并將接收到的請求存放在預先開(kāi)辟的緩沖區中,再交由XML解析器處理。為了節省資源,將SOAP消息解析和HTTP接收放在同一線(xiàn)程,一次只處理一個(gè)SOAP請求,因此整個(gè)解析過(guò)程只需要一個(gè)緩沖區。同時(shí)開(kāi)啟連接超時(shí)機制,如果客戶(hù)端連接后長(cháng)時(shí)間無(wú)動(dòng)作,接收程序將切斷連接,避免后續請求無(wú)法得到響應。本文引用地址:http://dyxdggzs.com/article/149382.htm
c++相關(guān)文章:c++教程
評論