Невозможно войти через KSOAP ANDROID - PullRequest
2 голосов
/ 07 февраля 2012

Я не могу войти.Это бросает мне ошибки.Не могли бы вы помочь, я использовал: Как вызвать локальный веб-сервис из мобильного приложения Android

Я пробовал этот код, но проблема в том, что он дает мне ошибки.Следует иметь в виду, что если мой логин пройден (или аутентифицирован) ... мой веб-сервис возвращает список, а не True / False.Что я должен делать ?В любом случае проверьте logcat.Пожалуйста.

Я действительно не знаю, как форматировать, извините за беспокойство.

02-06 16:52:34.285: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 47K, 53% free 2548K/5379K, external 1625K/2137K, paused 72ms
02-06 16:52:38.246: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 5K, 53% free 2561K/5379K, external 2727K/3406K, paused 48ms
02-06 16:52:40.196: W/KeyCharacterMap(330): No keyboard for id 0
02-06 16:52:40.206: W/KeyCharacterMap(330): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-06 16:52:57.565: I/System.out(330): validateLoginCredentials{username=username; password=password; }
02-06 16:52:57.775: I/dalvikvm(330): Could not find method javax.microedition.io.Connector.open, referenced from method org.ksoap2.transport.ServiceConnectionMidp.<init>
02-06 16:52:57.775: W/dalvikvm(330): VFY: unable to resolve static method 191: Ljavax/microedition/io/Connector;.open (Ljava/lang/String;IZ)Ljavax/microedition/io/Connection;
02-06 16:52:57.775: D/dalvikvm(330): VFY: replacing opcode 0x71 at 0x0005
02-06 16:52:57.785: D/dalvikvm(330): VFY: dead code 0x0008-000d in Lorg/ksoap2/transport/ServiceConnectionMidp;.<init> (Ljava/lang/String;)V
02-06 16:52:57.785: I/dalvikvm(330): Could not find method javax.microedition.io.HttpConnection.close, referenced from method org.ksoap2.transport.ServiceConnectionMidp.disconnect
02-06 16:52:57.785: W/dalvikvm(330): VFY: unable to resolve interface method 192: Ljavax/microedition/io/HttpConnection;.close ()V
02-06 16:52:57.785: D/dalvikvm(330): VFY: replacing opcode 0x72 at 0x0002
02-06 16:52:57.785: D/dalvikvm(330): VFY: dead code 0x0005-0005 in Lorg/ksoap2/transport/ServiceConnectionMidp;.disconnect ()V
02-06 16:52:57.797: I/dalvikvm(330): Could not find method javax.microedition.io.HttpConnection.openInputStream, referenced from method org.ksoap2.transport.ServiceConnectionMidp.openInputStream
02-06 16:52:57.797: W/dalvikvm(330): VFY: unable to resolve interface method 193: Ljavax/microedition/io/HttpConnection;.openInputStream ()Ljava/io/InputStream;
02-06 16:52:57.797: D/dalvikvm(330): VFY: replacing opcode 0x72 at 0x0002
02-06 16:52:57.797: D/dalvikvm(330): VFY: dead code 0x0005-0006 in Lorg/ksoap2/transport/ServiceConnectionMidp;.openInputStream ()Ljava/io/InputStream;
02-06 16:52:57.805: I/dalvikvm(330): Could not find method javax.microedition.io.HttpConnection.openOutputStream, referenced from method org.ksoap2.transport.ServiceConnectionMidp.openOutputStream
02-06 16:52:57.805: W/dalvikvm(330): VFY: unable to resolve interface method 194: Ljavax/microedition/io/HttpConnection;.openOutputStream ()Ljava/io/OutputStream;
02-06 16:52:57.805: D/dalvikvm(330): VFY: replacing opcode 0x72 at 0x0002
02-06 16:52:57.805: D/dalvikvm(330): VFY: dead code 0x0005-0006 in Lorg/ksoap2/transport/ServiceConnectionMidp;.openOutputStream ()Ljava/io/OutputStream;
02-06 16:52:57.805: I/dalvikvm(330): Could not find method javax.microedition.io.HttpConnection.setRequestMethod, referenced from method org.ksoap2.transport.ServiceConnectionMidp.setRequestMethod
02-06 16:52:57.805: W/dalvikvm(330): VFY: unable to resolve interface method 195: Ljavax/microedition/io/HttpConnection;.setRequestMethod (Ljava/lang/String;)V
02-06 16:52:57.805: D/dalvikvm(330): VFY: replacing opcode 0x72 at 0x0002
02-06 16:52:57.805: D/dalvikvm(330): VFY: dead code 0x0005-0005 in Lorg/ksoap2/transport/ServiceConnectionMidp;.setRequestMethod (Ljava/lang/String;)V
02-06 16:52:57.815: I/dalvikvm(330): Could not find method javax.microedition.io.HttpConnection.setRequestProperty, referenced from method org.ksoap2.transport.ServiceConnectionMidp.setRequestProperty
02-06 16:52:57.815: W/dalvikvm(330): VFY: unable to resolve interface method 196: Ljavax/microedition/io/HttpConnection;.setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
02-06 16:52:57.815: D/dalvikvm(330): VFY: replacing opcode 0x72 at 0x0002
02-06 16:52:57.815: D/dalvikvm(330): VFY: dead code 0x0005-0005 in Lorg/ksoap2/transport/ServiceConnectionMidp;.setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
02-06 16:52:57.825: W/dalvikvm(330): threadid=9: thread exiting with uncaught exception (group=0x40015560)
02-06 16:52:57.855: E/AndroidRuntime(330): FATAL EXCEPTION: AsyncTask #1
02-06 16:52:57.855: E/AndroidRuntime(330): java.lang.RuntimeException: An error occured while executing doInBackground()
02-06 16:52:57.855: E/AndroidRuntime(330):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.lang.Thread.run(Thread.java:1019)
02-06 16:52:57.855: E/AndroidRuntime(330): Caused by: java.lang.NoClassDefFoundError: javax.microedition.io.Connector
02-06 16:52:57.855: E/AndroidRuntime(330):  at org.ksoap2.transport.ServiceConnectionMidp.<init>(Unknown Source)
02-06 16:52:57.855: E/AndroidRuntime(330):  at org.ksoap2.transport.HttpTransport.getServiceConnection(Unknown Source)
02-06 16:52:57.855: E/AndroidRuntime(330):  at org.ksoap2.transport.HttpTransport.call(Unknown Source)
02-06 16:52:57.855: E/AndroidRuntime(330):  at com.khosla.nisc.Main.doLogin(Main.java:94)
02-06 16:52:57.855: E/AndroidRuntime(330):  at com.khosla.nisc.Main$LoginTask.doInBackground(Main.java:137)
02-06 16:52:57.855: E/AndroidRuntime(330):  at com.khosla.nisc.Main$LoginTask.doInBackground(Main.java:1)
02-06 16:52:57.855: E/AndroidRuntime(330):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
02-06 16:52:57.855: E/AndroidRuntime(330):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
02-06 16:52:57.855: E/AndroidRuntime(330):  ... 4 more
02-06 16:52:59.746: E/WindowManager(330): Activity com.khosla.nisc.Main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4052c7d8 that was originally added here
02-06 16:52:59.746: E/WindowManager(330): android.view.WindowLeaked: Activity com.khosla.nisc.Main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4052c7d8 that was originally added here
02-06 16:52:59.746: E/WindowManager(330):   at android.view.ViewRoot.<init>(ViewRoot.java:258)
02-06 16:52:59.746: E/WindowManager(330):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
02-06 16:52:59.746: E/WindowManager(330):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
02-06 16:52:59.746: E/WindowManager(330):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
02-06 16:52:59.746: E/WindowManager(330):   at android.app.Dialog.show(Dialog.java:241)
02-06 16:52:59.746: E/WindowManager(330):   at com.khosla.nisc.Main$LoginTask.onPreExecute(Main.java:130)
02-06 16:52:59.746: E/WindowManager(330):   at android.os.AsyncTask.execute(AsyncTask.java:391)
02-06 16:52:59.746: E/WindowManager(330):   at com.khosla.nisc.Main$1.onClick(Main.java:69)
02-06 16:52:59.746: E/WindowManager(330):   at android.view.View.performClick(View.java:2485)
02-06 16:52:59.746: E/WindowManager(330):   at android.view.View$PerformClick.run(View.java:9080)
02-06 16:52:59.746: E/WindowManager(330):   at android.os.Handler.handleCallback(Handler.java:587)
02-06 16:52:59.746: E/WindowManager(330):   at android.os.Handler.dispatchMessage(Handler.java:92)
02-06 16:52:59.746: E/WindowManager(330):   at android.os.Looper.loop(Looper.java:123)
02-06 16:52:59.746: E/WindowManager(330):   at android.app.ActivityThread.main(ActivityThread.java:3683)
02-06 16:52:59.746: E/WindowManager(330):   at java.lang.reflect.Method.invokeNative(Native Method)
02-06 16:52:59.746: E/WindowManager(330):   at java.lang.reflect.Method.invoke(Method.java:507)
02-06 16:52:59.746: E/WindowManager(330):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-06 16:52:59.746: E/WindowManager(330):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-06 16:52:59.746: E/WindowManager(330):   at dalvik.system.NativeStart.main(Native Method)
02-06 16:53:01.246: I/Process(330): Sending signal. PID: 330 SIG: 9

1 Ответ

2 голосов
/ 09 февраля 2012

Я надеюсь, что вы добавили ksoap2 файл jar в качестве внешнего или внутреннего файла jar в свой проект, а также добавили uses-permission для доступа к ИНТЕРНЕТУ в Manifest.

Необходимо использовать точное имя параметра вследующий код, который был в вашем Soap-Service на стороне сервера.

request.addProperty("userNAme", user_id);
request.addProperty("passWOrd", password);

Здесь UserNAme & passWord - это параметры, которые находятся в SOAP(ЗАПРОС) ФАЙЛ XML .Но user_id & пароль - это строковые переменные, хранящие информацию о пользователе.

Как обрабатывать ваш ответ :: -

try
{
            httptransport.call(SOAP_ACTION, envelope);
                SoapPrimitive response = (SoapPrimitive)envelope.getResponse();

                resultstring = response.toString();
             /** do what ever you want with your response, it is stored in "resultString" as a String, you can change it your own form as per usage. **/
}

Для вашей справки.Я использовал что-то вроде следующего для использования Soap, надеюсь, это поможет вам.

public void SoapService()
    {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        username = userid.getText().toString();
        password = passid.getText().toString();


        PropertyInfo UserInfo = new PropertyInfo();
        UserInfo.setName("xUserName");
        UserInfo.setValue(username);
        UserInfo.setType(string.class);
            request.addProperty(UserInfo);

        PropertyInfo PwdInfo = new PropertyInfo();
        PwdInfo.setName("xPassword");
        PwdInfo.setValue(password);
        PwdInfo.setType(string.class);
            request.addProperty(PwdInfo);

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;

            envelope.setOutputSoapObject(request);

            HttpTransportSE transportSE = new HttpTransportSE(URL);

            try
            {
                transportSE.call(SOAP_ACTION, envelope);
                SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
                Log.i("myLogin", response.toString());
                CheckResponse = response.toString();

                if(CheckResponse.equals(fake))
                {
                    intent = new Intent(LoginActivity.this, RunApp.class);
                    startActivity(intent);                  

                }else
                {
                    Toast.makeText(LoginActivity.this, "Please check your Username and Password" , Toast.LENGTH_SHORT).show();

                }
            }catch(Exception e)
            {
                e.printStackTrace();
            }                               

                Toast.makeText(LoginActivity.this, CheckResponse, Toast.LENGTH_SHORT).show();

    }// end of SoapService

В моем случае xUserName и xPassword - это параметры SoapRequest. подделка - это строка с текстом Вход успешный .

Надеюсь, это поможет вам.

Попробуйте добавить Журнал в свойпроект и получить точное местоположение проблемы.

Веселого и счастливого программирования ...

...