要通过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,在处理上的差异,也没有去看。