java hessian客户端,HESSIAN的VC++ 客户端与JAVA服务端通信实现

HESSIAN的VC++ 客户端与JAVA服务端通信实现

最近碰到一项目,需要与JAVA服务端通信,JAVA服务端使用的协议是HESSIAN。没听过,

谷歌一下找到其官方网站(http://www.doczj.com/doc/bd190e0ba6c30c2259019e14.html/) 简略一看,类似于C#的web servers,

二进制WEB服务,再谷歌一下,效率比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_ptrsi s(new string_input_stream(_http_result));

hessian_input hes_in(sis);

hes_i n.start_reply();

result = hes_in.get_result();

hes_i http://www.doczj.com/doc/bd190e0ba6c30c2259019e14.htmlplete_repl y();

好吧完事了看着蛮容易,实际也不是太难,主要是之前不知道还有CURL这个东东。如果还需要帮助

可以发消息。下一篇写VC++调用JAVA 的webservers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值