2011-10-26 2 views
0

내 Android 프로그램에서 .net webservice를 액세스하는 데 KSoap을 사용하고 있습니다. webservice가 다운되거나 webservice url이 잘못되었을 때 응용 프로그램이 다운됩니다.KSOAP : webservice URL이 틀리면 Android 애플리케이션이 충돌합니다.

누군가이 문제를 해결할 수있는 방법을 말해 줄 수 있습니까?

내 코드

10-26 16:39:39.174: V/Login2(791): Inside preexecute 
10-26 16:39:40.204: W/System.err(791): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <HTML>@1:6 in [email protected]) 
10-26 16:39:40.248: W/System.err(791): at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273) 
10-26 16:39:40.254: W/System.err(791): at org.kxml2.io.KXmlParser.require(KXmlParser.java:1431) 
10-26 16:39:40.254: W/System.err(791): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:127) 
10-26 16:39:40.254: W/System.err(791): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63) 
10-26 16:39:40.254: W/System.err(791): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) 
10-26 16:39:40.254: W/System.err(791): at com.eyepax.rdms.service.ValidateUser.validate(ValidateUser.java:69) 
10-26 16:39:40.254: W/System.err(791): at com.eyepax.rdms.LoginActivity$LoginTask.doInBackground(LoginActivity.java:434) 
10-26 16:39:40.265: W/System.err(791): at com.eyepax.rdms.LoginActivity$LoginTask.doInBackground(LoginActivity.java:1) 
10-26 16:39:40.265: W/System.err(791): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
10-26 16:39:40.265: W/System.err(791): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
10-26 16:39:40.265: W/System.err(791): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
10-26 16:39:40.265: W/System.err(791): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
10-26 16:39:40.265: W/System.err(791): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
10-26 16:39:40.265: W/System.err(791): at java.lang.Thread.run(Thread.java:1096) 
10-26 16:39:40.265: V/validate_user(791): Excepion 
10-26 16:39:40.265: V/Login2(791): Inside doingback 
10-26 16:39:40.265: V/Login2(791): Inside onPost 
10-26 16:39:40.265: D/AndroidRuntime(791): Shutting down VM 
10-26 16:39:40.265: W/dalvikvm(791): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
10-26 16:39:40.284: E/AndroidRuntime(791): FATAL EXCEPTION: main 
10-26 16:39:40.284: E/AndroidRuntime(791): java.lang.NullPointerException 
10-26 16:39:40.284: E/AndroidRuntime(791): at com.eyepax.rdms.LoginActivity$LoginTask.onPostExecute(LoginActivity.java:443) 
10-26 16:39:40.284: E/AndroidRuntime(791): at com.eyepax.rdms.LoginActivity$LoginTask.onPostExecute(LoginActivity.java:1) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.os.AsyncTask.finish(AsyncTask.java:417) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.os.Looper.loop(Looper.java:123) 
10-26 16:39:40.284: E/AndroidRuntime(791): at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-26 16:39:40.284: E/AndroidRuntime(791): at java.lang.reflect.Method.invokeNative(Native Method) 
10-26 16:39:40.284: E/AndroidRuntime(791): at java.lang.reflect.Method.invoke(Method.java:521) 
10-26 16:39:40.284: E/AndroidRuntime(791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-26 16:39:40.284: E/AndroidRuntime(791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-26 16:39:40.284: E/AndroidRuntime(791): at dalvik.system.NativeStart.main(Native Method) 

감사합니다 사전에

public String logOut(String prefURL){ 
String Desc = "logging out"; 


String NAMESPACE="http://tempuri.org/"; 
String METHOD_NAME = "Logout"; 
String SOAP_ACTION = "http://tempuri.org/Logout"; 
String URL = prefURL+"/Authentication.asmx"; 

//creating soap object 
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); 

//adding properties to Request Soap Object 
Request.addProperty("resourceID", ResourceID); 
Request.addProperty("organisationID", OrganisatoinID); 
Request.addProperty("description", Desc); 
Request.addProperty("sessionID", SessionID); 
Request.addProperty("imei", LoginActivity.deviceid); 
Request.addProperty("longtitude", String.valueOf(LoginActivity.RDMSLon)); 
Request.addProperty("langtitude", String.valueOf(LoginActivity.RDMSLat)); 
Request.addProperty("deviceType", 4); 

//creating soap envelop 
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet=true; 
envelope.setOutputSoapObject(Request); 

//creating transport object 
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); 

      try { 
androidHttpTransport.call(SOAP_ACTION, envelope); 
SoapPrimitive resultString = (SoapPrimitive)envelope.getResponse(); 

//jason array stored into a string 
jstringarray = String.valueOf(resultString); 
Log.v(TAG, "Logout" + jstringarray); 

jArray = new JSONArray(String.valueOf(jstringarray)); 
JSONObject json_data = null; 
json_data = jArray.getJSONObject(0); 
Status = json_data.getString("Status"); 
Log.v(TAG, "Logout: "+ Status); 


      } catch (IOException e) { 
    e.printStackTrace(); 
      } catch (XmlPullParserException e) { 
    e.printStackTrace(); 
      } catch (JSONException e) { 

    e.printStackTrace(); 
      }  

    return Status; 
} 

로그 캣 추출물 아래로 이동합니다.

+0

코드에 충돌이 발생할 수있는 위치가 많이 있습니다. 첨부 로그하시기 바랍니다 – Flavio

+0

너무 로그를 첨부. u 지금 도와주세요. 감사. –

답변

0

문제를 파악했습니다. 예외가 발생하면 주 스레드로 리턴 할 메시지가 없습니다. 나는 변수 값을 excepton 블록 안에 "failed"문자열 값을 추가했습니다. 그래서 더 이상 null 포인터.

관련 문제