2014-07-09 93 views
0

我只是试图用我创建的web服务执行一个简单的web服务数据拉。当我去运行程序时,它崩溃在我身上。我已经找到了问题,并没有运气有人可以帮我吗?android ksoap2 stackoverflow错误

public void getMessage() { 
    private final String NAMESPACE = "http://tempuri.org/"; 
    private final String URL = "http://10.19.9.148/RFID/Service1.asmx"; 
    private final String SOAP_ACTION = "http://tempuri.org/HelloWorld"; 
    private final String METHOD_NAME = "HelloWorld"; 
    private String TAG = "SOAP"; 

    private static String message; 


    //Create request 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    //Property which holds input parameters 
    PropertyInfo messagePI = new PropertyInfo(); 
    //Set Name 
    messagePI.setName("Practice"); 
    //Set Value 
    messagePI.setValue(messagePI); 
    //Set dataType 
    messagePI.setType(String.class); 
    //Add the property to request object 
    request.addProperty(messagePI); 
    //Create envelope 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    //Set output SOAP object 
    envelope.setOutputSoapObject(request); 
    //Create HTTP call object 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try { 
     //Invoke web service 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     //Get the response 
     SoapObject result = (SoapObject) envelope.bodyIn; 
     //Assign it to fahren static variable 
     // message = response.toString(); 

     if(result !=null){ 
      tv.setText(result.getProperty(0).toString()); 
     } 


     //tv.setText("" + results); 

    } catch (Exception e) { 
     tv.setText(e.getMessage()); 
     //e.printStackTrace(); 
    } 
} 

当我通过它在调试模式下,它的误差走出在行androidHttpTransport.call(SOAP_ACTION, envelope);,然后显示这在我的日志猫

07-09 07:32:11.309: E/AndroidRuntime(8343): FATAL EXCEPTION: main 
07-09 07:32:11.309: E/AndroidRuntime(8343): java.lang.StackOverflowError 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.String._getChars(String.java:1040) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:155) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:215) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serialization.PropertyInfo.toString(PropertyInfo.java:219) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at java.lang.StringBuffer.append(StringBuffer.java:203) 
07-09 07:32:11.309: E/AndroidRuntime(8343):  at org.ksoap2.serializatio 
+0

检查方法的任何recusive调用.... – Sree

+0

@Sreekanth我不认为我做 – bbesase

+0

是由SoapObject result =(SoapObject)envelope.bodyIn;'引发的错误?请找出。如果是这样,那么服务器响应数据太多,因为使用的StringBuilder溢出堆栈。 – greenapps

回答

0
import java.net.SocketException; 

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 

import android.R.string; 
import android.content.Context; 
import android.util.Log; 

public class Services { 
    private static String SOAP_ACTION; 
    private static String METHOD_NAME; 
    private static String NAMESPACE = "http://tempuri.org/"; 

    private static String URL = "xyz"; 

    private static Context mContext; 

    // Register User 
    public static String Register(Context context, String StudentCode, 
      ) { 

     SOAP_ACTION = "http://tempuri.org/Register"; 
     METHOD_NAME = "Register"; 

     mContext = context; 
     String result = null; 

     // Ack 
     Log.e("method", "Register"); 

     try { 
      SoapPrimitive responses = null; 
      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

      // Property PassCode 
      PropertyInfo piStudentCode = new PropertyInfo(); 
      piStudentCode.setName("sPassCode"); 
      piStudentCode.setValue(StudentCode); 
      piStudentCode.setType(string.class); 
      request.addProperty(piStudentCode); 



      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      HttpTransportSE andHttp = new HttpTransportSE(URL); 

      try { 
       andHttp.call(SOAP_ACTION, envelope); 
       responses = (SoapPrimitive) envelope.getResponse(); 

      } catch (SocketException ex) { 
       Log.e("Register SE ex", ex.toString()); 
       ex.printStackTrace(); 
      } catch (Exception e) { 
       Log.e("Register ex", e.toString()); 
       e.printStackTrace(); 
      } 

      result = responses.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(System.err); 
      Log.e("Register main ex", e.toString()); 
     } 

     return result; 
    } 

我所用的方式,希望它可以帮助你

+0

仍然收到相同的错误 – bbesase