簡體   English   中英

將日期傳遞到ASMX Web服務

[英]Passing date to ASMX web service

我在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”),我調試並發現它在androidHttpTransport上制動。調用(SOAP_ACTION,信封);

但是除了捕獲到我設置的內容外,我沒有在日志中找到關於它的任何東西...

對我來說,這似乎無法解析您要提供給Web服務的dateObj,這就是為什么在此行發生異常:

androidHttpTransport.call(SOAP_ACTION, envelope);

但由於格式化程序具有以下格式:

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

也許(三個!)“ mmm”正在引起錯誤? 我很確定這會產生類似2月的“ Feb”之類的信息。(例如“ 2014年2月11日”):

嘗試類似:

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

要么

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

順便說一句,為了避免本地化和互操作性問題,我經常使用DateTime對象,將其准確格式化為String,以便將該對象提供給WebService。 因為很多時候我在.asmx Web服務和J2EE Web服務之間存在互操作性問題(例如,對於J2EE和.NET,DateTime的范圍不相同,並且如果它是null / nil值,那么您也會遇到麻煩)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM