HESSIAN 的VC++ 客户端与JAVA服务端通信 实现
2013-04-24 00:20
423 查看
HESSIAN的VC++
客户端与JAVA服务端通信实现
最近碰到一项目,需要与JAVA服务端通信,JAVA服务端使用的协议是HESSIAN。没听过,谷歌一下找到其官方网站(http://hessian.caucho.com/)简略一看,类似于C#的webservers,二进制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_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 头验证
相关文章推荐
- Java基于socket实现的客户端和服务端通信功能完整实例
- 虚拟机centos中java代码实现linux(作为服务端),windows(作为客户端)通信
- Java review--NIO实例:实现服务端和客户端的简单通信
- Java简单实现UDP服务端和客户端的通信
- Java-Soket实现客户端与服务端双向通信
- JAVA的Corba客户端 - 服务端 通信实现
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
- Java简单实现TCP服务端和客户端通信
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
- 使用VC++实现 客户端和服务端通信 获取本机IP地址
- java udp网络编程及实例代码,实现客户端和服务端通信
- [置顶] java 服务端,实现服务端与客户端之间的通信以及客户端之间的通信
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java中利用socket实现简单的服务端与客户端的通信(入门级)
- socket编程 -- epoll模型服务端/客户端通信的实现
- 客户端(android/ios)与java服务端tomcat的gzip实现
- 基于开源SuperSocket实现客户端和服务端通信项目实战
- C语言实现服务端和客户端进行TCP通信实例
- Java的oauth2.0 服务端与客户端的实现