首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android ksoap2堆栈溢出错误

android ksoap2堆栈溢出错误
EN

Stack Overflow用户
提问于 2014-07-09 20:12:48
回答 1查看 285关注 0票数 0

我只是想用我创建的web服务执行一个简单的web服务数据拉取。当我去运行这个程序时,它就崩溃了。我已经找过这个问题了,还没找到,有人能帮帮我吗?

代码语言:javascript
复制
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);行出错,然后在我的log cat上显示这一点

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-07-09 20:20:40

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24653393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档