java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive不能转换为org.ksoap2.serialization.SoapObject [英] java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot be cast to org.ksoap2.serialization.SoapObject

查看:1614
本文介绍了java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive不能转换为org.ksoap2.serialization.SoapObject的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做的SOAP解析的机器人。这些都是我需要同时做解析以下步骤 1)我下载的 ksoap2-机器人组装-2.4-JAR-与依存关系(1)的.jar 。 2)然后我用这本code,但我得到这个错误。

  ** java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive不能转换为org.ksoap2.serialization.SoapObject **
 

下面是我的code。

 包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 =htt​​p://wsendpoints.bbrailapps.firstgroup.com/getVersion;
    私有静态最后弦乐METHOD_NAME =的getVersion;
    私有静态最后弦乐NAMESPACE =htt​​p://wsendpoints.bbrailapps.firstgroup.com;
    私有静态最后字符串的URL =htt​​p://railapps.firstgroup.com/FirstGroupRailApps/services/RailAppsCAWS?wsdl;
    私人SoapObject resultRequestSOAP = NULL;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        的System.out.println(=====================+ haveNetworkConnection());

        新的AsyncTask<虚空,虚空,字符串>(){
            ProgressDialog对话框=新ProgressDialog(MainActivity.this);

            在preExecute保护无效(){
                dialog.show();
            };

            保护字符串doInBackground(无效[] PARAMS){

                resultRequestSOAP =新SoapObject(命名空间METHOD_NAME);

                SoapSerializationEnvelope envp =新SoapSerializationEnvelope(
                        SoapEnvelope.VER11);
                envp.dotNet = TRUE;
                envp.setOutputSoapObject(resultRequestSOAP);
                AndroidHttpTransport androidHttpTransport =新AndroidHttpTransport(
                        URL);
                尝试 {
                    androidHttpTransport.call(SOAP_ACTION,envp);
                    SoapPrimitive resultsString =(SoapPrimitive)envp.getResponse();
                    返回resultRequestSOAP.toString();

                }赶上(例外五){
                    Log.i(WS错误 - >中,e.toString());
                    返回e.toString();
                }


            };

            保护无效onPostExecute(字符串结果){
                dialog.dismiss();
                Toast.makeText(MainActivity.this,
                        检查网络connectivety+结果,
                        Toast.LENGTH_LONG).show();
            };
        }。执行();

    }

    公共布尔haveNetworkConnection(){
        布尔haveConnectedWifi = FALSE;
        布尔haveConnectedMobile = FALSE;

        ConnectivityManager厘米=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        的NetworkInfo []的NetInfo = cm.getAllNetworkInfo();
        对于(的NetworkInfo妮:NetInfo的){
            如果(ni.getTypeName()。equalsIgnoreCase(WIFI))
                如果(ni.isConnected())
                    haveConnectedWifi = TRUE;
            如果(ni.getTypeName()。equalsIgnoreCase(手机))
                如果(ni.isConnected())
                    haveConnectedMobile = TRUE;
        }
        返回haveConnectedWifi || haveConnectedMobile;
    }

}
 

解决方案

唯一的例外是:

  resultRequestSOAP =(SoapObject)envp.getResponse();
 

由于你不能施放的响应得到形式 SoapSerializationEnvelope SoapObject

I am doing soap parsing in android .These are the following steps I take while doing parsing 1) I am download ksoap2-android-assembly-2.4-jar-with-dependencies (1).jar . 2) Then I used this in this code But I am getting this error .

**java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot be cast to org.ksoap2.serialization.SoapObject**

Here is my code.

 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;
    }

}

解决方案

The exception is on :

resultRequestSOAP = (SoapObject) envp.getResponse();

Because you can't cast the response get form SoapSerializationEnvelope into SoapObject

这篇关于java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive不能转换为org.ksoap2.serialization.SoapObject的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆