C# 将日期传递给ASMX web服务

C# 将日期传递给ASMX web服务,c#,android,web-services,asmx,date-parsing,C#,Android,Web Services,Asmx,Date Parsing,我在android设备上用c#编写asmx web服务 我建立了连接,当在某些web方法中我需要整数或字符串之类的输入参数时,一切都很好,但问题是,当web方法需要日期时,我尝试以多种格式发送日期,但总是无法得到答案 我需要发送日期对象,还是字符串?web服务查看日期是否可能与其他内容类似 这是与web服务“通信”的方法: public void connectSOAP() { SoapObject request = new SoapObject(NAMESPACE, METHOD_

我在android设备上用c#编写asmx web服务

我建立了连接,当在某些web方法中我需要整数或字符串之类的输入参数时,一切都很好,但问题是,当web方法需要日期时,我尝试以多种格式发送日期,但总是无法得到答案

我需要发送日期对象,还是字符串?web服务查看日期是否可能与其他内容类似

这是与web服务“通信”的方法:

public void connectSOAP() 
{
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    String dateStr = "04/05/2010"; 
    Date dateObj=null;
    SimpleDateFormat curFormater = new SimpleDateFormat("dd/mmm/yyyy"); 
    try 
    {
        dateObj = curFormater.parse(dateStr);
    } 
    catch (java.text.ParseException e1) 
    {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } 
    request.addProperty("dtFrom",dateObj);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    try 
    {
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION, envelope);
        if (envelope.getResponse() != null) 
        {
            if (envelope.bodyIn instanceof SoapFault) 
            {
                String str = ((SoapFault) envelope.bodyIn).faultstring;
                Log.i("", str);
            } 
            else 
            {
                SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
                Log.d("WS", String.valueOf(resultsRequestSOAP));
            }    
        };
    } 
    catch (Exception e) 
    {
        Log.d("WS","sss");
    }
}
当我更改web方法时(某个方法的工作日期已过期),我会在日志中得到响应),但当我在日志中得到catch(“sss”)的日期是这种方式时,我调试并发现它启动了: 调用(SOAP_操作,信封)


但我在日志中找不到关于此的任何内容,除了我设置的catch…

对于我来说,这看起来像是无法解析您要提供给Web服务的dateObj,这就是为什么在这一行出现异常的原因:

androidHttpTransport.call(SOAP_ACTION, envelope);
但由于格式化程序具有以下格式:

SimpleDateFormat curFormater = new SimpleDateFormat("dd/mmm/yyyy"); 
可能是(三个!)“嗯”导致了错误??我很确定这会产生一些类似于2月份的“二月”之类的东西。。(如“2014年2月11日”):

尝试以下方法:

SimpleDateFormat curFormater = new SimpleDateFormat("dd/mm/yyyy"); 


顺便说一句,为了避免本地化和互操作性问题,我经常使用精确格式化为字符串的DateTime对象,将该对象传递给WebService。因为很多时候,我遇到了诸如asmx web服务和J2EE web服务之间的互操作性问题(例如,J2EE和.NET的DateTime范围不同,如果它是null/nil值,您也会遇到麻烦)。

您所说的“您在获取答案时遇到问题”是什么意思?它是完全没有读它,还是读错了?不幸的是,这里没有太多的内容…Thanx作为建议,我更改了litle问题,添加了代码…Thanx作为答案,我尝试了许多格式(包括yyyy-MM-dd、yyyy-MM-dd-HH:MM、yyyy-MM-dd-HH:MM、yyyy-MM-dd-T'HH:MM:ss.SSSZ等)仍然存在相同的问题。没有datetime的所有其他方法都可以完美地完成“工作”,但web服务何时要求date参数不起作用。就像web服务一样,想要一件事,却得到另一件事。。我不知道该怎么做了..你不能为datetime值切换到字符串类型吗?web服务是由您创建的吗?您可以使用SoapTraceExtension查看在尝试通信时“线路”上到底发生了什么。我假设您得到了一个SoapFault,它指出了哪里出了问题,但是只有当您使用TraceExtension处理SOAP消息时,您才能看到它(web上有很多这样的示例:)
SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy");