java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive无法强制转换为org.ksoap2.serialization.SoapObject

java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive无法强制转换为org.ksoap2.serialization.SoapObject,java,android,android-layout,ksoap2,Java,Android,Android Layout,Ksoap2,我正在android中进行soap解析 1) 我正在下载ksoap2-android-assembly-2.4-jar-with-dependencies(1.jar)。 2) 然后我在这个代码中使用了这个,但是我得到了这个错误 **java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot be cast to org.ksoap2.serialization.SoapObject** 这是我的密码

我正在android中进行soap解析 1) 我正在下载ksoap2-android-assembly-2.4-jar-with-dependencies(1.jar)。 2) 然后我在这个代码中使用了这个,但是我得到了这个错误

**java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot be cast to org.ksoap2.serialization.SoapObject**
这是我的密码

 package com.example.networkconnectivity;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity {
    private static final String SOAP_ACTION = "http://wsendpoints.bbrailapps.firstgroup.com/getVersion";
    private static final String METHOD_NAME = "getVersion";
    private static final String NAMESPACE = "http://wsendpoints.bbrailapps.firstgroup.com";
    private static final String URL = "http://railapps.firstgroup.com/FirstGroupRailApps/services/RailAppsCAWS?wsdl";
    private SoapObject resultRequestSOAP = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("=====================" + haveNetworkConnection());

        new AsyncTask<Void, Void, String>() {
            ProgressDialog dialog = new ProgressDialog(MainActivity.this);

            protected void onPreExecute() {
                dialog.show();
            };

            protected String doInBackground(Void[] params) {

                resultRequestSOAP = new SoapObject(NAMESPACE, METHOD_NAME);

                SoapSerializationEnvelope envp = new SoapSerializationEnvelope(
                        SoapEnvelope.VER11);
                envp.dotNet = true;
                envp.setOutputSoapObject(resultRequestSOAP);
                AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(
                        URL);
                try {
                    androidHttpTransport.call(SOAP_ACTION, envp);
                    SoapPrimitive resultsString = (SoapPrimitive)envp.getResponse();
                    return resultRequestSOAP.toString();    

                } catch (Exception e) {
                    Log.i("WS Error->", e.toString());
                    return e.toString();
                }


            };

            protected void onPostExecute(String result) {
                dialog.dismiss();
                Toast.makeText(MainActivity.this,
                        "Check Network connectivety" + result,
                        Toast.LENGTH_LONG).show();
            };
        }.execute();

    }

    public boolean haveNetworkConnection() {
        boolean haveConnectedWifi = false;
        boolean haveConnectedMobile = false;

        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();
        for (NetworkInfo ni : netInfo) {
            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected())
                    haveConnectedWifi = true;
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected())
                    haveConnectedMobile = true;
        }
        return haveConnectedWifi || haveConnectedMobile;
    }

}
package com.example.networkconnectivity;
导入org.ksoap2.SoapEnvelope;
导入org.ksoap2.serialization.SoapObject;
导入org.ksoap2.serialization.SoapPrimitive;
导入org.ksoap2.serialization.SoapSerializationEnvelope;
导入org.ksoap2.transport.AndroidHttpTransport;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
私有静态最终字符串SOAP_ACTION=”http://wsendpoints.bbrailapps.firstgroup.com/getVersion";
私有静态最终字符串方法\u NAME=“getVersion”;
私有静态最终字符串命名空间=”http://wsendpoints.bbrailapps.firstgroup.com";
私有静态最终字符串URL=”http://railapps.firstgroup.com/FirstGroupRailApps/services/RailAppsCAWS?wsdl";
私有SoapObject resultRequestSOAP=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println(“============================”+haveNetworkConnection());
新建异步任务(){
ProgressDialog=新建ProgressDialog(MainActivity.this);
受保护的void onPreExecute(){
dialog.show();
};
受保护字符串doInBackground(Void[]参数){
resultRequestSOAP=新的SoapObject(名称空间、方法\名称);
SoapSerializationEnvelope envp=新的SoapSerializationEnvelope(
第11版);
envp.dotNet=true;
环境setOutputSoapObject(resultRequestSOAP);
AndroidHttpTransport AndroidHttpTransport=新AndroidHttpTransport(
网址);
试一试{
调用(SOAP_操作,envp);
SoapPrimitive结果字符串=(SoapPrimitive)envp.getResponse();
返回resultRequestSOAP.toString();
}捕获(例外e){
i(“WS-Error->”,例如toString());
返回e.toString();
}
};
受保护的void onPostExecute(字符串结果){
dialog.dismise();
Toast.makeText(MainActivity.this,
“检查网络连接”+结果,
Toast.LENGTH_LONG).show();
};
}.execute();
}
公共网络连接(){
布尔值haveConnectedWifi=false;
布尔haveConnectedMobile=false;
ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo[]netInfo=cm.getAllNetworkInfo();
对于(网络信息ni:netInfo){
if(ni.getTypeName().equalsIgnoreCase(“WIFI”))
如果(ni.isConnected())
haveConnectedWifi=true;
if(ni.getTypeName().equalsIgnoreCase(“移动”))
如果(ni.isConnected())
haveConnectedMobile=true;
}
返回haveConnectedWifi | | haveConnectedMobile;
}
}
例外情况是:

resultRequestSOAP = (SoapObject) envp.getResponse();
因为您无法将响应get form
SoapSerializationEnvelope
强制转换为
SoapObject
请更改以下内容: SoapPrimitive结果字符串=(SoapPrimitive)envp.getResponse()


SoapObject resultsString=(SoapObject)envp.getResponse()

因此,我如何删除此例外有关解析的更多信息,请检查此链接:您可以使用任何解析器解析我的方法吗?您可以使用任何
XML
解析技术来解析此方法,例如
SAXParser
DOMPArser
PULLParser
事实上,我是android+java开发新手,您可以更改我的代码或给我一些步骤,以便我得到结果吗
if your web method returns json response as json array then use

SoapObject result= (SoapObject) envelop.getResponse();

if your web method returns json response as primitive data then use

SoapPrimitive results = (SoapPrimitive)envelop.getResponse();

so for your code use

SoapObject result= (SoapObject) envelop.getResponse();