2013-05-26 4 views
0

나는 Eclipse에서 Android Studio로 프로젝트를 가져 왔습니다. 이 프로젝트는 이클립스에서 잘 작동했다.android studio에서 ksoap2 오류

나는 PHP로 내 서버와 안드로이드 애플 리케이션을 통신하기 위해 SOAP를 사용하고 있습니다. 내가 사용하고 라이브러리는 ksoap2-안드로이드 조립-2.6.4-항아리 -와 - dependencies.jar

앱이 앱이 라이브러리에서 클래스를 호출 할 때 충돌이다.

1) 여기 내 연결 방법을 넣고 jSON ARRAY를 반환합니다.

import android.util.Log; 
import motelalpaso.datos.Config; 
import org.json.JSONArray; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 

public class ConexionSoap { 

    public static JSONArray get_json_array(String method, String[]... params){ 

      JSONArray array = new JSONArray(); 
      SoapObject result = null; 
      SoapObject request = new SoapObject(Config.NAMESPACE, method); 
      for(int i = 0; i < params.length; i++){ 
        request.addProperty(params[i][0], params[i][1]); 
      } 

SoapSerializationEnvelope envelope = newSoapSerializationEnvelope(SoapEnvelope.VER12); 
      envelope.dotNet = false; 
      try{ 
        envelope.setOutputSoapObject(request); 
        HttpTransportSE transporte = new HttpTransportSE(Config.URL);transporte.call(Config.NAMESPACE + "/" + method, envelope);Log.d("try", "Llego hasta aqui"); 
        result = (SoapObject) envelope.bodyIn; 
        array = new JSONArray(result.getProperty(1).toString()); 
      }catch(Exception e){ 

        Log.d("Error", e.getMessage()); 
      } 



      return array; 
    } 

    } 

2) 이들은 통신에 필요한 매개 변수입니다. 내가 무엇을 가지고

public class Config { 
public static final String NAMESPACE = 
    "http://www.motelalpaso.cl/webservice/android/"; 
    public static final String BY_LOCATION = "obtener_por_location"; 
    public static final String BY_NAME = "find_autos_by_namek"; 
public static final String URL = 
"http://www.motelalpaso.cl/webservice/android/moteles.php"; 
    } 

3 ) 마지막 오류 .. 난 당신이 내가 뭘 잘못되기를 바랍니다 ..

java.lang.RuntimeException: An error occured while executing doInBackground() 
    at android.os.AsyncTask$3.done(AsyncTask.java:200) 
    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
    at java.lang.Thread.run(Thread.java:1019) 
    Caused by: java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject 
    at motelalpaso.negocio.ConexionSoap.get_json_array(ConexionSoap.java:18) 
    at motelalpaso.ui.BuscarNombre$1$1.doInBackground(BuscarNombre.java:55) 
    at motelalpaso.ui.BuscarNombre$1$1.doInBackground(BuscarNombre.java:40) 
    at android.os.AsyncTask$2.call(AsyncTask.java:185) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 

답변

6

먼저 libs 폴더에 libs를 넣은 다음 마우스 오른쪽 버튼으로 클릭하고 "라이브러리로 추가"를 선택하십시오. 열기 build.gradle 파일 및 라이브러리

dependencies { 
compile files('libs/android-support-v4.jar') 
compile files('libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar') 
} 

마지막으로 터미널에서 루트 폴더로 가서 "청소 ./gralew"를 실행, 재생 및 안드로이드 응용 프로그램을 실행 추가 할 수 있습니다. 앱이 Gradle을 파일에

+0

잘 작동 !!!! – funkeeiads

0

당신은 당신의 전화에 ""추가해야합니다

transporte.call("\"" + Config.NAMESPACE + "/" + method + "\"", envelope); //It should work fine 
0

추가 저장소 ...

repositories { 
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } 
} 

다음 컴파일 추가 종속성을

dependencies { 
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1' 
}