Android/iOS访问wcf传递参数为实体对象的问题
来源:互联网 发布:淘宝中老年女模特许洁 编辑:程序博客网 时间:2024/06/05 04:36
简单记录一下使用实体对象作为参数的传递!
在服务端使用webservice时是没有问题的,但是当替换成wcf时就出现传递的参数无法序列化的问题!
服务端代码:
Service1.svc
namespace WcfTeacherService{ // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。 public class Service1 : IService1 { public string DoWork(TestModel model) { log4net.LogManager.GetLogger(this.GetType()).Error(model.AA); return model.AA; } }}
TestModel.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ServiceModel;using System.Runtime.Serialization;namespace WcfTeacherService{ public class TestModel { public string AA { get; set; } }}
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Service1 service = new Service1();TestModel model = new TestModel();model.aA = "123";service.eventHandler = new IWsdl2CodeEvents() {@Overridepublic void Wsdl2CodeFinished(String methodName, Object Data) {@SuppressWarnings("unused")String aa = methodName;}@Overridepublic void Wsdl2CodeStartedRequest() {}@Overridepublic void Wsdl2CodeFinishedWithException(Exception ex) {}@Overridepublic void Wsdl2CodeEndedRequest() {}};try {service.DoWorkAsync(model);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}在WCF中以值类型作为参数,如:int,string,bool等都没有问题,但是自定义实体对象作为参数时,总是获取不到值!后来经过fiddler抓包反复对比,原来是TestModel的命名空间和DoWork方法的命名空间不一致所致!
所以要修改上面的TestModel.cs;在类名上面加上命名空间的声明
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ServiceModel;using System.Runtime.Serialization;namespace WcfTeacherService{ [DataContract(Namespace="http://tempuri.org/")] public class TestModel { [DataMember] public string AA { get; set; } }}同时在接口上也加上相同的命名空间即可
namespace WcfTeacherService{ // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。 [ServiceContract(Namespace="http://tempuri.org/"] public interface IService1 { [OperationContract] string DoWork(TestModel model); }}
只要修改服务端的命名空间即可,ios和android端自动生成的代码无须变化!
记录起来挺简单的,就这么简单的问题可是调试了一天多呀!
android真机调试使用flidder抓取网络数据的方法:http://blog.csdn.net/zshq280017423/article/details/8928616
0 0
- Android/iOS访问wcf传递参数为实体对象的问题
- Android访问WCF服务(使用json实现参数传递)
- Android访问WCF服务(使用json实现参数传递)
- 有关Android 访问WCF的有关问题
- 解决WCF接口无法传递object参数的问题
- 解决WCF接口无法传递object参数的问题
- 解决WCF接口无法传递object参数的问题
- 关于安卓调用wcf传递复杂参数的问题
- Mybatis多参数及实体对象传递
- Mybatis多参数及实体对象传递
- Android与webservice进行实体对象的传递
- Android与webservice进行实体对象的传递
- Android与webservice进行实体对象的传递
- 对象作为参数传递的相关问题
- Wcf传递的参数实际不为空,但是接收时显示为空
- 关于实体为不同角色访问的问题
- android调用WCF(多参数传递)
- .net中引用传递对象作为参数传递的问题
- (转载)Android数据库高手秘籍(二)——创建表和LitePal的基本用法
- 8个炫酷的HTML5动画、应用和游戏
- SDUTOJ 2074 区间覆盖问题 贪心
- 外交部就李克强总理出席世界经济论坛2015年年会举行中外媒体吹风会
- wireshark抓包图解 TCP三次握手/四次挥手详解
- Android/iOS访问wcf传递参数为实体对象的问题
- SQL模糊查询
- Python文件夹与文件的操作
- SQL Server日志清除的好用方案
- HTTP详解(2)-请求、响应、缓存
- java基础巩固系列(十一):java测试程序运行时间的两种方法
- 目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)
- IOS 网络编程 + 后台保持连接
- (转载)Android数据库高手秘籍(三)——使用LitePal升级表