在WebService上传递字节流

来源:互联网 发布:柳岩淘宝直播 编辑:程序博客网 时间:2024/05/12 03:28

要通过WebService上传图片,到网上搜出一大堆,最有用的就是郑钧的博客。

 

想了一下,原理很简单。

 

webservice,要实现在Java和.net之间通信,最基本的元素就是类型;SOAP定义了四种基本类型,int/long/boolean/String;

 

其它类型都是不支持的。要使用其它类型,就要做类型映射,就是将SOAP不认识的类型,映射为SOAP认识的类型;比如,java中的Vector,就不能直接用。因为.net不一定能识别。

 

webservice通信,本质上走的就是XML;对象要传递,就是要序列化和反序列化;怎么序列化,就怎么反序列化;

 

比如郑钧的例子中的wsTeam,有两个String,序列化的时候,两次writeUTF;反序列化时,就两次readUTF;

 

序列化后,就是字节流,通过XML直接传递字节流,肯定是不行的。因此,要转换;最直接的方法就是用Base64;

 

在KSOAP中,提供了base64的类,可以直接进行base64的转换。

 

比如:returnCode和personCount;

转成字节流就是:

0 a 72 65 74 75 72 6e 43 6f 64  65

0 b 70 65 72 73 6f 6e 43 6f 75 6e 74

base64转换后,就是:AApyZXR1cm5Db2RlAAtwZXJzb25Db3VudA==

 

在这个过程中,还应该有一个协商;协商的细节,没有去看。

 

KSOAP1.1和KSOAP1.2,在处理上的差异,也没有去看。