目前有好多WebService是用.net开发的,在返回值和输入,输出参数中都有一些.net特有的类型,最常见的就是DataTable,DataSet等这些,这样的WebService对与.net程序来说,调用起来很是方便好用。。
可是对于其它平台,比如Android下来调用,却是非常麻烦,我现在就遇到这样的问题,深受其苦,在网上找了很久也没有找到合适的解决方法。。
先看两种情况:
第一种:返回值是DataSet的情况,我不知道怎么解析它里边的值,返回的是一个SoapObject对象,里边的properties这个属性在递归N层之后,可以看到值。。这个N不清楚是否是可变的,应该是吧,想问下高手们,Android或java里,有没有什么类型可以接收DataSet的返回类型?
第二种:参数需要传DataSet的情况,这种情况好像更麻烦,要传什么类型进去,才能被.net的WebService识别并可以转换成它的DataSet呢?
再问一个相关的问题,在.net中,从DB里查询出来的数据,一般用DataTable来接收,在java里,用什么类型的对象来接收呢?(看了下Android里是用Cursor来收。。感觉真心好麻烦。)
一共三个问题,请朋友们耐心解答,谢谢!
我正好做过安卓客户端,我是这么做的(也是普遍做法),需要通过JSON做中间量转化:服务器端把数据库取出的DataSet转成JSON串格式,发送给客户端。客户端通过解析收到JSON串,获取DataSet。
WebService是其它公司提供的,他们由于某些原因不会改成json
第一种:没有
第二种:不是传什么类型,而是传 SOAP 消息;
再问一个相关问题:DataTable 只是数据集合,.Net 中也是利用 SqlDataReader(类似 Android 里的 Cursor)来填充 DataTable。
http://stackoverflow.com/questions/1194971/dataset-class-in-java
正常应该返回实体吧?DataTable应该不太正规。。。哪儿有给别人调用的东西还DataTable呢?
我教你一个非正规方法,你自己封装一下这个webservices,返回Json
当看到DataTable做参数传值时,就明白你问题出在哪里.
接口一定要明确类型,尤其webservice这种不能用弱类型
最好是转json
是的 ,接口 太渣了
普遍做法,做个字符串转换器,转成Json
接口方的问题,返回格式应该用json或者是xml。
http://blog.csdn.net/yenange/article/details/5824967
你用这上面的方法试试,我以前在做.net调用java提供的webservice的时候返回的是一个对象,这个对象在.NET里肯定是没有的,按照这篇文章中提供的方法来添加java的webservice可以生成一个.net对应的一个代理类,里面会根据java webservice中定义的对象生成对应关系,这样不管java的webservice返回的什么对象,代理类里也会生成这们对象的代码,直接就可以用。
java调用.net也应该是可以这样搞的吧,你可以试试!
我很奇怪,web service不都传输的是xml吗?直接解析这个xml不可以吗?