.net调用Java webservices反序列化错误?

Nick_Ngai 2014-01-16 07:20:19
我在.net项目中直接引用Java Webservices。有些方法直接调用可以得到数据,但是有些提示错误如下:

不知道是什么原因?是Java data类型与.net有差异吗?
.net调用Java Webservices代码如下:
PatientService.schPatientAdmissionClinicServicesPortTypeClient paClient = new PatientService.schPatientAdmissionClinicServicesPortTypeClient();
PatientService.WebServicePatientVo wpa = new PatientService.WebServicePatientVo();
wpa.s_account_id = "1,2";
PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");
调试到红色部分报错如上图。谁知道是什么问题?怎么解决?
...全文
359 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nick_Ngai 2014-01-22
  • 打赏
  • 举报
回复
引用 33 楼 anboat 的回复:
在.net Web项目中解决了这个问题,方法如下: 找到引用的Webservices中Reference.cs文件,修改date类型为Object类型如下: //private System.Nullable<System.DateTime> dobField; //原来的 private object dobField; //现在的 找到下面方法一并修改,如下: [System.Xml.Serialization.XmlElementAttribute(IsNullable = true, Order = 7)] //DataType="date", public object dob { get { return this.dobField; } set { this.dobField = value; this.RaisePropertyChanged("dob"); } } 但是还有问题,我在Windows Phone 8中用同样方法修改,还是报错,不知道为什么?
真是郁闷,搞了几天,终于解决了,无意中测试改为String类型就可以拿到数据了。 但是没明白为什么Object类型就不行,难道是因为Java中没有Object类型的问题?
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 16 楼 wind_cloud2011 的回复:
你看一下getPatientID的方法,返回是什么类型数组?
返回的是WebServicePatientVo[],WebServicePatientVo是一个实体,有下面这个字段: private int id; private String s_account_id; private String chinese_given_name; private String chinese_sur_name; private String given_name; private String sur_name; private String nickname; private int sex_id; private int address_id; private String pfullName; private String patient_no; private String tel_home; private String tel_mobile; private String tel_office; private String phone; private String date_created; private Integer encounter_id; private int recordsPerPage = 0; private int totalRecords = 0; private Integer rowFrom=null; private Integer rowThru=null; private int pageNumber = 0; private List list = null; private String address_district; private String address_street; private String address_area; private Date dob; private String order = null; private String orderBy = null; private String ordering = null;
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 17 楼 wind_cloud2011 的回复:
("1,2")这个是???不是1.2?
嗯是("1,2")
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
("1,2")这个是???不是1.2?
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
你看一下getPatientID的方法,返回是什么类型数组?
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 14 楼 wind_cloud2011 的回复:
你在[WebMethod] 里可返回XML或dataset的 http://www.2cto.com/kf/201307/226970.html
我引用的是一个Java webservices,并且我不可以修改这个WebServices。 只能通过.net调用它。
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
你在[WebMethod] 里可返回XML或dataset的 http://www.2cto.com/kf/201307/226970.html
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 12 楼 wind_cloud2011 的回复:
那应该是后面这个参数("1,2")有误吧,你的getPatientID方法要知道阿
参数应该没错的,我看到Java里面直接这么写的,如下: SELECT * FROM patient WHERE id in (#{pVo}) --pVO是我传的参数。 不知道能不能在调用getPatientID之前,先解析为xml?有什么方法?
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
那应该是后面这个参数("1,2")有误吧,你的getPatientID方法要知道阿
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 10 楼 wind_cloud2011 的回复:
如果是数组,那你把数组内容取出来就是,你调试时,看数组内容是什么,放一组出来看一下,好帮你解决问题
你好,现在是读不出里面的数据,调试到调用哪里就报错了?paClient.getPatientID("1,2")这个就是调用Webservices的getPatientID方法。 PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
如果是数组,那你把数组内容取出来就是,你调试时,看数组内容是什么,放一组出来看一下,好帮你解决问题
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 gomoku 的回复:
看你的InnerException,可能是'日期型'数据的格式不对。
嗯,如果是日期类型不对应该怎么解决?
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 6 楼 wind_cloud2011 的回复:
XML <fc iii=555 /> <fc iii=666 /> 你用dataset: DataSet ds = w.getSupportDataSet() string st = dt.Tables["fc"].Rows[1]["iii"].ToString();
PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2"); 我这个返回的是一个对象数组,Webservices我是不可以修改的,怎么用Dataset?转换类型?
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
dataset解析XML: http://blog.csdn.net/wind_cloud2011/article/details/18255557
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
XML <fc iii=555 /> <fc iii=666 /> 你用dataset: DataSet ds = w.getSupportDataSet() string st = dt.Tables["fc"].Rows[1]["iii"].ToString();
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 4 楼 wind_cloud2011 的回复:
是返回xml?
我调用的Webservices那个方法是返回对象。 这样可以"先得到整个XML,再解析里面的数据"?
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
是返回xml?
Nick_Ngai 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 wind_cloud2011 的回复:
你取出的XML有错误,先得到整个XML,再解析里面的数据
你好,这个WebServices不是编译为XML的,怎么用XML解析?能给详细点吗?
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
那一定是了,看来你又要修改了
wind_cloud2011 2014-01-17
  • 打赏
  • 举报
回复
你取出的XML有错误,先得到整个XML,再解析里面的数据
加载更多回复(17)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧