我正在开发一个应用程序,其中我需要在KSOAP基础Web服务中解析“日期”,我需要在服务器上使用“MM / dd / yyyy”的格式来传递日期,所以我使用SimepldateFormate并将Date字符串传递给date
上课,但是这里有些错误让我感觉像是
错误:
08-13 14:45:20.031: ERROR/KsoapDemoActivity(562): Exception=>java.text.ParseException: Unparseable date: "08/01/2011"
我还在KSoap
pi1.setType(Date.class);
但是没有得到解决的情况下向日期类提出请求。我也尝试使用make class 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("nkpatel@asd-infotech.com");
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));
}
}
更新
我已将“08-01-2012”更改为“08/01/2012” 但现在它引起了我的错误
SoapFault - faultcode:'SOAP-ENV:Server'faultstring:'模块'MobileApp.exe'中地址00405818的访问冲突。阅读地址69570A03'faultactor:''detail:null
答案 0 :(得分:2)
在simpleDateFormat ...
中使用/
代替-
formatter = new SimpleDateFormat("MM/dd/yyyy");
答案 1 :(得分:0)
您在SimpleDateFormat
班级
使用:
formatter = new SimpleDateFormat("MM/dd/yyyy");
而不是:
formatter = new SimpleDateFormat("MM-dd-yyyy");
答案 2 :(得分: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);