android调用wcf接口,现在普通的get和post能返回数据,但是如果接口参数里面有ref引用的参数怎么配置,还有如果返回dataset,那么在android怎么读取,有知道的朋友给我一些意见和建议。然后我的QQ是466093844,一起来讨论解决问题。

解决方案 »

  1.   

    请不要直接在WCF里面返回dataset,因为它不能跨平台,这需要在Android这边构建一个类似dataset的复杂类型,很麻烦。
    对于ref类型的参数我没试过,但应该是需要包装后才能得到其返回值,如果你各种尝试失败的话,可以考虑手动包装成一个返回值的方式来实现。
      

  2.   

    手动包转成返回值是什么意思?意思就是在如果返回值是string类型的话自己在里面自己定义值,然后返回么?
      

  3.   

    用到ref的地方,肯定是有多个返回值才需要,否则完全没有这个必要,你说对吧。
    对于多个返回值的情况,你可以返回Dictionary<String,Object>,键值为ref的参数名,值为ref的参数值,这样直接return返回后,自己去读取字典得到每个原先需要ref来返回的参数,这就是所谓的包装。
      

  4.   

    直接返回 Dictionary<string, Object>对象,android那边能处理吗??
      

  5.   

    如果你的Android是Java编写的,那么有个叫Hashtable<K, V>的类型可以映射,Java的Dictionary是抽象类,因此用这个派生的Hashtable来接收处理,Json反序列化到这个类型肯定可以成功的。如果你的Android是C#编写的,有个Mono运行库可以支持,那么就更加简单了,两边类型完全一样。
      

  6.   

    我的服务是C#,也就是使用的是.net的webservice,不过是wcf配置的,在winform上。能加你QQ吗?或者你加我一下,我还有一些问题想问问你。466093844
      

  7.   

    我能提供的也只有这么多了,你似乎只需要编写服务,Android的不管,那么就没那么多烦心事了,提供Json序列化后的数据,让对方自己解析去。
      

  8.   

    好的,谢谢了,我不仅要写服务器,还要写android的代码,都要写,呵呵,android不熟悉,.net的还算是熟悉。多谢了啊。
      

  9.   

    你返回dataset。其实应该是返回XML格式。需要你自己解释。
    其实最好不要用dataset。因为这个好像是C#自己的。你自己写格式转成XML吧
      

  10.   

    其实dataset直接转成xml格式没问题,不过我发现从stringbuffer里面读取xml的string类型之后,有\u000a啊什么的回车换行符号,结尾符号/前面还有一个\符号,导致读出的格式为:<NewDataSet>\u000d\u000a  
    <Table1>\u000d\u000a    
    <name>测试的名字<\/name>\u000d\u000a    
    <age>测试的年龄<\/age>\u000d\u000a    
    <sex>测试的性别<\/sex>\u000d\u000a  
    <\/Table1>\u000d\u000a  
    <Table1>\u000d\u000a    
    <name>测试的名字1<\/name>\u000d\u000a    
    <age>测试的年龄1<\/age>\u000d\u000a    
    <sex>测试的性别1<\/sex>\u000d\u000a  
    <\/Table1>\u000d\u000a
    <\/NewDataSet>
      

  11.   

    别用xml序列化,xml的处理不方便,需要自己解析写代码,工程量大,Android自带Json序列化类,可以直接快速将对象序列化和反序列化,使用非常方便,而且那样你也不需要看内部数据啥格式,因为即使有转义字符也是它自动帮你处理好的。
    参考:android.util.JsonReader这个类
    另外都说了不要用dataset这个类,你在android找不到类型自动反序列化上去,还不如构建实体类,两边定义一致,这样处理会很方便。
      

  12.   


    你为什么要用string去解析啊
    不是有专门解析XML的类嘛。因为XML里面有关键字你自己解析的话还是很麻烦的
      

  13.   

    我不懂就不知道 有专门的解析器。后来还是用json来解决了,比较方便和容易。