2012-08-13 143 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);