0

我正在开发一个应用程序,我需要在 KSOAP 基础网络服务中解析“日期”,我需要在服务器上以“MM/dd/yyyy”的格式传递日期,所以我使用 SimepldateFormate 并将日期字符串传递给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 ClassMarshalDate 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);
       }
}

元帅日期

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 - 故障代码:“SOAP-ENV:Server”故障字符串:“模块“MobileApp.exe”中地址 00405818 的访问冲突。读取地址 69570A03' faultactor: '' detail: null

4

3 回答 3

2

在 simpleDateFormat 中使用/而不是...-

 formatter = new SimpleDateFormat("MM/dd/yyyy");
于 2012-08-13T09:37:04.223 回答
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);
于 2013-04-02T12:09:29.923 回答
0

你在SimpleDateFormat课堂上使用了错误的模式

利用:

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

代替:

formatter = new SimpleDateFormat("MM-dd-yyyy");
于 2012-08-13T09:40:00.777 回答