我已经使用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)
答案 0 :(得分:0)
location.getLatitude()
返回什么类型?我问,因为如果您尝试发送复杂类型,则需要实现KvmSerializable
并使用envelope.addMapping
将该变量映射到类中。