HESSIAN 的VC++ 用戶端與JAVA服務端通訊 實現__python

來源:互聯網
上載者:User
HESSIAN的VC++ 用戶端與JAVA服務端通訊實現

最近碰到一項目,需要與JAVA服務端通訊,JAVA服務端使用的協議是HESSIAN。沒聽過,Google一下找到其官方網站(http://hessian.caucho.com/)簡略一看,類似於C#的web servers,二進位WEB服務,再Google一下,效率比web servers 要高和SOCKET 差不多。

轉正題,官方文檔支援C++實現(不支援你丫也好意思)下了源碼大致看了下,baidu一把,支援hessian支援HTTP協議,將協議封裝在HTTP封包中,通過HTTP通道傳送。因為他是採用二進位編碼沒有多餘的資料,資料量比SOAP協議少得多(這個項目還用到SOAP協議)。     既然支援HTTP協議,心想支援當然可以用MFC裡面封裝好的HTTP 類庫來處理CHttpConnection 和CInternetSession  看了下HESSIAN源碼 無非就是裝傳入字串進行轉化 再POST到服務端,下了一個demo 改一下,一調 服務端 返回確實是返回了,不過返回的是 500錯誤(未知的伺服器錯誤) ,找半天也不知道什麼原因,繼續GOOGLE之,發現了CURL 這個好東東(http://curl.haxx.se/),支援DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS 這多協議。這NB,但哥不會用啊。又只好看例子,下demo 好吧弄著一調,服務端一調可以了。廢話說完,進入正題。主要流程如下:

調用 start_call(method)對要遠程調用的方法名運行字元轉換,具體轉換可以看hessian源碼

調用 set_parameter(mc,param)將參數字串進行轉換 並和轉換後的遠程方法名進行拼接。

調用complete_call(string strParam) 為字串設定結束標識 加z

傳出資料準備完成。該主角登場CURL

調用curl_easy_setopt分別設定CURLOPT_URL CURLOPT_POSTFIELDS, CURLOPT_POSTFIELDSIZE  參數含義參見官方網站,

_res=curl_easy_perform(_curl) 向遠程網站發送http封包

若返回成功 調用hessian_input 裡面的 函數 接收資料

auto_ptr<input_stream> sis(new string_input_stream(_http_result));

 hessian_input hes_in(sis);

 hes_in.start_reply();

 result = hes_in.get_result();

 hes_in.complete_reply();

好吧完事了 看著蠻容易,實際也不是太難,主要是之前不知道還有CURL這個東東。如果還需要協助可以發郵件給我luoj166@163.com  。下一篇寫VC++調用JAVA 的webservers 帶HTTP 頭驗證

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.