2012-08-13 118 views
0

我正在開發一個應用程序,我nee dto解析「日期」在KSOAP基礎webservices,我需要通過日期在服務器與「MM/dd/yyyy」甲酸鹽,所以我有使用SimepldateFormate傳遞日期字符串到date類,但這裏的東西是錯誤的是讓我的錯誤一樣ParseException:解析日期與Ksoap解析

錯誤:

08-13 14:45:20.031: ERROR/KsoapDemoActivity(562): Exception=>java.text.ParseException: Unparseable date: "08/01/2011" 

我也撕裂與Date類請求KSoappi1.setType(Date.class);,但沒有得到解決我也嘗試過make類MarshalDate mdouble = new MarshalDate();,但沒有得到解決

可以請你幫我出這個

這裏是我的代碼

private void InsertClientDetailForMobApp() { 
    // TODO Auto-generated method stub 
    try { 
     String NAMESPACE = "urn:MobileApplicationIntf-IMobileApplication";// "http://tempuri.org/"; 
     String METHOD_NAME = "InsertClientDetailForMobApp"; 
     String SOAP_ACTION = "urn:MobileApplicationIntf-IMobileApplication#InsertClientDetailForMobApp"; 
     String URL = ("URL");// 

     SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); 


     PropertyInfo pi1 = new PropertyInfo(); 
     pi1.setName("asfirstname"); 
     pi1.setValue("Nikunj"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi2 = new PropertyInfo(); 
     pi1.setName("asLastName"); 
     pi1.setValue("patel"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi3 = new PropertyInfo(); 
     pi1.setName("asNationalID"); 
     pi1.setValue("25125514"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi4 = new PropertyInfo(); 
     pi1.setName("asCountryissued"); 
     pi1.setValue("asdasdasd"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi5 = new PropertyInfo(); 
     pi1.setName("asLicenceNo"); 
     pi1.setValue("asdasd"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi6 = new PropertyInfo(); 
     pi1.setName("asPassportNo"); 
     pi1.setValue("12512513221321"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi7 = new PropertyInfo(); 
     pi1.setName("asGender"); 
     pi1.setValue("M"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi8 = new PropertyInfo(); 
     pi1.setName("asAddress1"); 
     pi1.setValue("Indasdas asd as aia"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi9 = new PropertyInfo(); 
     pi1.setName("asAddress2"); 
     pi1.setValue("asdas asd asdasdas "); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi10 = new PropertyInfo(); 
     pi1.setName("asCountry"); 
     pi1.setValue("India"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi11 = new PropertyInfo(); 
     pi1.setName("asCity"); 
     pi1.setValue("Ahmedabad"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi12 = new PropertyInfo(); 
     pi1.setName("asProvince"); 
     pi1.setValue("Gujarat"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi13 = new PropertyInfo(); 
     pi1.setName("asZip"); 
     pi1.setValue("356256"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi14 = new PropertyInfo(); 
     pi1.setName("asDayTelephone"); 
     pi1.setValue("15165165565456"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     PropertyInfo pi15 = new PropertyInfo(); 
     pi1.setName("asEveTelephone"); 
     pi1.setValue("5545654654"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi16 = new PropertyInfo(); 
     pi1.setName("asFAX"); 
     pi1.setValue("54145615"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi17 = new PropertyInfo(); 
     pi1.setName("asEmail"); 
     pi1.setValue("[email protected]"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi18 = new PropertyInfo(); 
     pi1.setName("asUserName"); 
     pi1.setValue("Nik123"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi19 = new PropertyInfo(); 
     pi1.setName("asPassword"); 
     pi1.setValue("India"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi20 = new PropertyInfo(); 
     pi1.setName("asLanguege"); 
     pi1.setValue("English"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi21 = new PropertyInfo(); 
     pi1.setName("asQuestion1"); 
     pi1.setValue("Question1"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi22 = new PropertyInfo(); 
     pi1.setName("asAnswer1"); 
     pi1.setValue("Nothing1"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi23 = new PropertyInfo(); 
     pi1.setName("asQuestion2"); 
     pi1.setValue("what1"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi24 = new PropertyInfo(); 
     pi1.setName("asSSN"); 
     pi1.setValue("123456"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi25 = new PropertyInfo(); 
     pi1.setName("asAnswer2"); 
     pi1.setValue("Nothing2"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi26 = new PropertyInfo(); 
     pi1.setName("asPrimaryCurrency"); 
     pi1.setValue("INR"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi27 = new PropertyInfo(); 
     pi1.setName("asSecondaryCurrency"); 
     pi1.setValue("USD"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi28 = new PropertyInfo(); 
     pi1.setName("asAgentID"); 
     pi1.setValue("456"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 

     PropertyInfo pi29 = new PropertyInfo(); 
     pi1.setName("asBranchCode"); 
     pi1.setValue("Tcom India"); 
     pi1.setType(String.class); 
     Request.addProperty(pi1); 


     String str_date = "08/01/2011"; 
     // yyyy-MM-dd'T'HH:mm:ss 
     DateFormat formatter; 
     Date date; 
     //formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     formatter = new SimpleDateFormat("MM-dd-yyyy"); 
     date = (Date) formatter.parse(str_date); 


     PropertyInfo pi30 = new PropertyInfo(); 
     pi1.setName("dtDOB"); 
     pi1.setValue(date); 
     pi1.setType(Date.class); 
     Request.addProperty(pi1); 






     /* 
     * Call the web service and retrieve result ... how luvly <3 
     */ 





     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(Request); 

     AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(
       URL); 

     MarshalDate mdouble = new MarshalDate(); 
     mdouble.register(envelope); 



     androidHttpTransport.call(SOAP_ACTION, envelope); 
     Log.i("TAG", "soapResponse=>" + envelope.getResponse()); 
     } catch (Exception e) { 
      soapResponseObject = null; 
      Log.e(TAG, "niraliwebservice() Exception=>" + e); 
     } 
} 

MarshalDate

package com.KsoapDemo; 

import java.io.IOException; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import org.kobjects.isodate.IsoDate; 
import org.ksoap2.serialization.Marshal; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import org.xmlpull.v1.XmlSerializer; 


public class MarshalDate implements Marshal 
{ 

     public Object readInstance(XmlPullParser parser, String namespace, String name, 
       PropertyInfo expected) throws IOException, XmlPullParserException { 

      return IsoDate.stringToDate(parser.nextText(), IsoDate.DATE_TIME); 


     } 


     public void register(SoapSerializationEnvelope cm) { 
      cm.addMapping(cm.xsd, "DateTime", Date.class, this); 

     } 


     public void writeInstance(XmlSerializer writer, Object obj) throws IOException { 
      writer.text(IsoDate.dateToString((Date) obj, IsoDate.DATE_TIME)); 
      } 

} 

UPDATE:

我有更改 「2012年8月1日」 到 「08月01日」 但現在它鼓舞了我錯誤

SoapFault - faultcode: 'SOAP-ENV:Server' faultstring: 'Access violation at address 00405818 in module 'MobileApp.exe'. Read of address 69570A03' faultactor: '' detail: null

回答

2

使用/,而不是在SimpleDateFormat的- ...

formatter = new SimpleDateFormat("MM/dd/yyyy"); 
+0

我已經改變了現在的代碼給我新的錯誤 – 2012-08-13 09:39:30

0

你使用了錯誤的花樣在SimpleDateFormat

使用:

而不是
formatter = new SimpleDateFormat("MM/dd/yyyy"); 

formatter = new SimpleDateFormat("MM-dd-yyyy"); 
0

註冊您的MarshalDate到您的SOAP信封:

MarshalDate _MarshalDate = new MarshalDate(); 
_MarshalDate.register(soapEnvelope); 

然後繼續你的屬性,直到日期要通過和這樣做:

PropertyInfo _PropertyInfo = new PropertyInfo(); 
_PropertyInfo.setName("yourParameterInYourMethodeInTheWebService"); 
_PropertyInfo.setType(Date.class); 
_PropertyInfo.setValue(yourVariableOfTypeDate); 
soapReq.addProperty(_PropertyInfo);