[英]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.