2017-04-10 58 views
0

我正在开发一个android应用程序,其中我将图像转换为字节数组并使用kso​​ap2发送它。当我尝试它时,我收到一个异常,应用程序崩溃。我正在给我的代码和堆栈跟踪下面..如果任何人可以帮助我..请帮助。尝试使用kso​​ap发送字节数组时Android ClassDefFoundError

日志

java.lang.NoClassDefFoundError: org.kobjects.base64.Base64
at org.ksoap2.serialization.MarshalBase64.writeInstance(MarshalBase64.java:39) at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:653) at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:645) at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:614) at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:598) at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:655) at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:579) at org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:192)
at org.ksoap2.transport.Transport.createRequestData(Transport.java:82) at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:79) at com.example.manappuram.punching_maceinn.MainActivity.GetConfirm(MainActivity.java:420) at com.example.manappuram.punching_maceinn.MainActivity$10.onPictureTaken(MainActivity.java:797) at android.hardware.Camera$EventHandler.handleMessage(Camera.java:823) at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)

MainActivity

public void GetConfirm() { 
     String SOAP_ACTION = "http://tempuri.org/cccc"; 
     String METHOD_NAME = "ccccc"; 
     String NAMESPACE = "http://tempuri.org/"; 
     String URL = "http://zxxxx.xx.xx.xx/my_services/ccc.asmx"; 

     try { 

      //Code added by Jocheved on 31/03/2017 
      String photoPath = Environment.getExternalStorageDirectory()+"/JCG Camera/img.jpg"; 

File imagefile = new File(photoPath); 
      FileInputStream fis = null; 
      try { 
       fis = new FileInputStream(imagefile); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 

       Bitmap bm = BitmapFactory.decodeStream(fis); 
       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
       bm.compress(Bitmap.CompressFormat.JPEG, 50, baos); 
       byte[] b = baos.toByteArray(); 
       String encImage = Base64.encodeToString(b, Base64.DEFAULT); 

SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); 
      pi1 = new PropertyInfo(); 
      pi1.setName("xcode"); 
      int x = Integer.parseInt(empId.getText().toString().trim()); 
      pi1.setValue(x); 
      pi1.setType(Integer.class); 
      Request.addProperty(pi1); 

      pi2 = new PropertyInfo(); 
      pi2.setName("in_time"); 
      pi2.setValue(shiftTime.getText().toString().trim()); 
      pi2.setType(String.class); 
      Request.addProperty(pi2); 

      pi3 = new PropertyInfo(); 
      pi3.setName("em_id"); 
      pi3.setValue(3531); 
      pi3.setType(Integer.class); 
      Request.addProperty(pi3); 

      pi4 = new PropertyInfo(); 
      pi4.setName("photo_rel"); 
      System.out.println("image convertion string is " + img); 
      pi4.setValue(b);    
      Request.addProperty(pi4); 

      pi5 = new PropertyInfo(); 
      pi5.setName("ipd"); 
      pi5.setValue("10.29.245.85~DT-3501-56070"); 
      pi5.setType(String.class); 
      Request.addProperty(pi5); 


      SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      new MarshalBase64().register(soapEnvelope); 
      soapEnvelope.dotNet = true; 
      soapEnvelope.setOutputSoapObject(Request); 

      HttpTransportSE transport = new HttpTransportSE(URL); 
      transport.debug = true; 
      transport.call(SOAP_ACTION, soapEnvelope); 
      System.out.println("Cannot serialize 1"); 
      try{ 
       SoapObject result=(SoapObject)soapEnvelope.getResponse(); 
       Toast.makeText(MainActivity.this, "Successs", Toast.LENGTH_LONG).show(); 
       if(result!= null){ 
        System.out.println("Resp in confirm click is " + result.toString()); 
        Toast.makeText(MainActivity.this, "Successs", Toast.LENGTH_LONG).show(); 

的build.gradle

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs')  
    compile 'com.android.support:appcompat-v7:22.0.0'  
    compile files('libs/ksoap2-android-2.5.2.jar') 
    compile files('libs/org-apache-commons-codec.jar') 

} 
+0

你不需要2个'编译文件(...)',因为'compile fileTree(...)'这样做。 – azizbekian

+0

所以我需要如何改变它.. – Jocheved

回答

0

看来你不加入ksoup库properly.that就是为什么gradle这个是无法找到它。

能否请您看看这个link

编辑:

不要lib.Try图书馆加入复制粘贴以下行成的build.gradle文件。

compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.0' 
+0

任何人都可以帮助我.. – Jocheved

+0

@Jocheved请检查编辑的文章 – Steve

相关问题