看你的InnerException,可能是'日期型'数据的格式不对。

解决方案 »

  1.   

    你取出的XML有错误,先得到整个XML,再解析里面的数据
      

  2.   

    你好,这个WebServices不是编译为XML的,怎么用XML解析?能给详细点吗?
      

  3.   

    我调用的Webservices那个方法是返回对象。
    这样可以"先得到整个XML,再解析里面的数据"?
      

  4.   

    XML
    <fc iii=555 />
    <fc iii=666 />
    你用dataset:
    DataSet ds = w.getSupportDataSet()
    string st = dt.Tables["fc"].Rows[1]["iii"].ToString();
      

  5.   

    dataset解析XML:
    http://blog.csdn.net/wind_cloud2011/article/details/18255557
      

  6.   

    PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");
    我这个返回的是一个对象数组,Webservices我是不可以修改的,怎么用Dataset?转换类型?
      

  7.   

    你好,现在是读不出里面的数据,调试到调用哪里就报错了?paClient.getPatientID("1,2")这个就是调用Webservices的getPatientID方法。
    PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");
      

  8.   

    那应该是后面这个参数("1,2")有误吧,你的getPatientID方法要知道阿
      

  9.   

    参数应该没错的,我看到Java里面直接这么写的,如下:
    SELECT * FROM patient WHERE id in (#{pVo}) --pVO是我传的参数。
    不知道能不能在调用getPatientID之前,先解析为xml?有什么方法?
      

  10.   

    你在[WebMethod] 里可返回XML或dataset的
    http://www.2cto.com/kf/201307/226970.html
      

  11.   

    我引用的是一个Java webservices,并且我不可以修改这个WebServices。
    只能通过.net调用它。
      

  12.   

    你看一下getPatientID的方法,返回是什么类型数组?
      

  13.   

    返回的是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;
      

  14.   

     string[] s = new string[30];//声明string数组存放返回结果  
     s =  paClient.getPatientID("1,2");
    这样就取得webservice 返回的数组
    s[0]就对应id
    s[1]对应s_account_id
      

  15.   

    如果正常返回这样也取回数据 
     PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");
                foreach (WebServicePatientVo m in paID)
                {
                    messagebox.show(m.id);
                    messagebox.show(m.s_account_id);
                }
    可你在 PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2");这句子就出错了,总觉得参数写得不对
      

  16.   

    Java里面getPatientID("1,2,")是这样传的,我又试了下 还是不行
      

  17.   

    Java里面getPatientID("1,2,")是这样传的,我又试了下 还是不行
    参数应该没错的吧,我试下传个无效的参数时返回null就没有报错,所以应该是拿到数据时有问题吧,不知道会不会是date类型.net与Java有差异?
      

  18.   

    返回值格式出错,应该是这个:private Date dob;
    日期格式太复杂,还是换成string
      

  19.   

    那有可能就是这里的date了,
    private Date dob;C#没这个
      

  20.   

    我不可以修改这个private Date dob;
    不知道C#有什么方式可以处理吗?
      

  21.   

    对方提供的Webservices我不能够修改。还有其他方式?
      

  22.   

    可能就是private Date dob这里面有错误,这Java中调用时返回数据格式为“Sun Mar 08 16:35:58 CST 2009”,这个在.net中是不能转换的。
    有没有什么方法能在getPatientID()获取数据前将这个方法解析为xml?
      

  23.   

    关键是你调用时就出错了PatientService.WebServicePatientVo[] paID = paClient.getPatientID("1,2")
    就无法读取数据了,如果能读取数据,转换就可阿
      

  24.   

    难道只有修改Java webservices这一种方法了?
      

  25.   

    我引用Java Webservices的方式是在添加服务引用里面直接输入Java的地址,然后直接调用。
    另外我也试过用Visual studio自带的命令行工具,把Java Webservices自动生成一个类,添加到项目中,在调用类,还是报错。
    或者还有什么其他方式调用Java Webservices?能够在调用方法前就转换date类型?
      

  26.   

    你看一下这个http://hi.baidu.com/bopdawpdarbenxq/item/8a6db9c7a1900c090ad93ac5
      

  27.   

    在.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中用同样方法修改,还是报错,不知道为什么?
      

  28.   


    在Windows Phone 8是同样的错误?
      

  29.   

     
    windows Phone 8中错误如下:
    “System.ServiceModel.FaultException”类型的异常在 System.ServiceModel.ni.dll 中发生,但未在用户代码中进行处理
    但是觉得应该是同样的错误,因为我试着传个无效的参数,可以返回null,不会报错,所以猜测可能还是Date类型错误。
      

  30.   

    真是郁闷,搞了几天,终于解决了,无意中测试改为String类型就可以拿到数据了。
    但是没明白为什么Object类型就不行,难道是因为Java中没有Object类型的问题?