无法在Ksoap2中序列化 - 安装程序集

时间:2014-08-12 09:01:52

标签: android web-services ksoap2

我已经使用IIS服务器在.net中创建了Web服务,我正在尝试通过Web服务从android到.net查找数据,但是我收到此错误消息“无法序列化”

String resTxt = null;
                    mylistener = new gpslocation();

                    // Get the location manager
                    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

                    // Define the criteria how to select the location provider
                    criteria = new Criteria();
                    provider = locationManager.getBestProvider(criteria, false);            
                    locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);


                    Location location = locationManager.getLastKnownLocation(provider);
                    if (location != null) {
                        mylistener.onLocationChanged(location);
                    } else {
                        // leads to the settings because there is no last known location
                        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        startActivity(intent);
                    }

                    locationManager.requestLocationUpdates(provider, 0, 10,  mylistener);

                    //start calling the web service.
                 //create soap request
                 // get the text entered in the search box
                   String fname = txt_fname.getText().toString();
                   String lname = txt_lname.getText().toString();
                   String phone = txt_phone.getText().toString();
                   String email = txt_email.getText().toString();



                   Random r = new Random();
                   int userID = r.nextInt();                       

                   //show alert if the user did not enter anything to search
                   if (fname.equals("") || lname.equals("") || phone.equals("") || email.equals(""))
                   {
                   }
                   else        
                   {    
                     //start calling the web service.
                     //create soap request
                    SoapObject request = new SoapObject(NAMESPACE, WebService_Method1);                     
                    //send the parameters
                    request.addProperty("methodName","addUser"); 
                    request.addProperty("UserID",userID);
                    request.addProperty("FirstName", fname);
                    request.addProperty("LastName", lname);
                    request.addProperty("Phone", phone);
                    request.addProperty("Email", email);
                    request.addProperty("Latitude",location.getLatitude());
                    request.addProperty("Longitude",location.getLongitude());


                    //create soap client
                    SoapSerializationEnvelope envelope = new  SoapSerializationEnvelope(SoapEnvelope.VER11); 
                    envelope.dotNet = true; 
                    envelope.implicitTypes = true;
                    envelope.setAddAdornments(false);
                    envelope.setOutputSoapObject(request); 

                    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);  
                    try
                    { 
                    //call the web method from the URL 
                    androidHttpTransport.call(SOAP_ACTION, envelope);   
                    // Get the response
                    SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
                    Log.d("ENVELOPE",""+envelope.bodyIn);
                   // SoapObject result = (SoapObject) envelope.bodyIn; // get response
                   // Log.d("ENVELOPE",""+envelope.bodyIn);
                    // Assign it to resTxt variable static variable
                    resTxt = response.toString();
                    txt_email.setText(resTxt);

                    }


               catch(Exception e)
                 {
                   e.printStackTrace() ;
                   txt_email.setText((CharSequence) e);

                 }     ## Heading ##

堆栈跟踪是:

08-12 11:23:54.499: D/ATRecorder(11187): com.htc.autotest.dlib.RecordEngine in loader dalvik.system.DexClassLoader@4052fe60
08-12 11:23:54.519: D/WindowManagerImpl(11187): addView, new view, mViews[0]: com.android.internal.policy.impl.PhoneWindow$DecorView@405228a8
08-12 11:24:03.498: D/View(11187): onTouchEvent: viewFlags: 0x18004001
08-12 11:24:03.498: D/View(11187): onTouchEvent: isFocusable: true, isFocusableInTouchMode: false, isFocused: false; focusTaken: false
08-12 11:24:20.094: D/dalvikvm(11187): GC_CONCURRENT freed 114K, 44% free 3209K/5703K, external 0K/0K, paused 7ms+1ms
08-12 11:24:20.735: W/System.err(11187): java.lang.RuntimeException: Cannot serialize: 51.44597556666667
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:684)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:670)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:615)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBodyWithAttributes(SoapSerializationEnvelope.java:590)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:680)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:568)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:205)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.transport.Transport.createRequestData(Transport.java:134)
08-12 11:24:20.735: W/System.err(11187):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:149)
08-12 11:24:20.745: W/System.err(11187):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
08-12 11:24:20.745: W/System.err(11187):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
08-12 11:24:20.745: W/System.err(11187):    at safe.sound.registration$1.onClick(registration.java:137)
08-12 11:24:20.755: W/System.err(11187):    at android.view.View.performClick(View.java:2533)
08-12 11:24:20.755: W/System.err(11187):    at android.view.View$PerformClick.run(View.java:9320)
08-12 11:24:20.755: W/System.err(11187):    at android.os.Handler.handleCallback(Handler.java:587)
08-12 11:24:20.755: W/System.err(11187):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-12 11:24:20.755: W/System.err(11187):    at android.os.Looper.loop(Looper.java:150)
08-12 11:24:20.755: W/System.err(11187):    at android.app.ActivityThread.main(ActivityThread.java:4385)
08-12 11:24:20.765: W/System.err(11187):    at java.lang.reflect.Method.invokeNative(Native Method)
08-12 11:24:20.765: W/System.err(11187):    at java.lang.reflect.Method.invoke(Method.java:507)
08-12 11:24:20.765: W/System.err(11187):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
08-12 11:24:20.765: W/System.err(11187):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
08-12 11:24:20.765: W/System.err(11187):    at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

location.getLatitude()返回什么类型?我问,因为如果您尝试发送复杂类型,则需要实现KvmSerializable并使用envelope.addMapping将该变量映射到类中。