将日期传递给ASMX Web服务

时间:2014-08-01 14:31:25

标签: c# android web-services asmx date-parsing

我使用asmx web服务在c#over android设备上写入。

我建立连接,在某些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”),我调试并发现它制动:     androidHttpTransport.call(SOAP_ACTION,envelope);

但我没有在日志中找到任何关于它的东西,除了我设置的捕获......

1 个答案:

答案 0 :(得分:0)

对我来说,这看起来像你想要给web服务的dateObj无法解析,这就是为什么在这一行发生异常的原因:

androidHttpTransport.call(SOAP_ACTION, envelope);

但是因为你的格式化程序有这种格式:

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

也许(三个!)" mmm"导致错误?我很确定这会产生类似于"二月"对于二月等等...(例如" 11 / Feb / 2014"):

尝试类似:

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

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

顺便说一句,为了避免本地化和互操作性问题,我经常使用精确格式化为Strings的DateTime对象将这些对象提供给WebService。因为很多次我通过例如互操作性之间存在问题。 .asmx Webservice和J2EE Web服务(例如,对于J2EE和.NET,DateTime的范围是不同的,如果它是null / nil值,你也会遇到麻烦)。