【问题标题】:Serialization DataTable (WCF) to Android project序列化 DataTable (WCF) 到 Android 项目
【发布时间】:2013-04-16 14:27:41
【问题描述】:

我将 Android java 与 WCF 服务连接起来。现在我正在尝试将数据从 WCF 服务获取到我的项目中。

我对来自 C# 的 DataTable 类型有疑问,我必须将其解析到名为 Groups 的类中

现在我有序列化错误:

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

Web 服务 (WCF)

var sp = new StoreProcEgzequtor("[dbo].GetAddonsTypes");
string a = sp.SqlCommand.Connection.Database;
DataTable dt = sp.ExecuteDataTable("Tabela");
return dt;

班级组

public class Groups {
    private long id;
    private long ID2;
    private int flgW;
    private int flgO;
    private String Name;

活动

public class AndroidWSClientActivity extends Activity {

    private static final String METHOD_NAME = "GetAddonsTypes";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://10.0.2.2:53432/Service1.svc?wsdl";
    final String SOAP_ACTION = "http://tempuri.org/IService1/GetAddonsTypes";

    TextView textView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_wsclient_page);

    textView = (TextView) findViewById(R.id.textView2);


    Thread networkThread = new Thread() {
        @Override
        public void run() {
          try {
             SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);         
             SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
             envelope.setOutputSoapObject(request);

             HttpTransportSE ht = new HttpTransportSE(URL);
             ht.call(SOAP_ACTION, envelope);
             final  SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
             final String str = response.toString();

             runOnUiThread (new Runnable(){ 
         public void run() {
             Log.e("OK",str.toString());
               }
           });
          }
         catch (Exception e) {
            Log.e("WS", e.toString());
         }
        }
      };
      networkThread.start();
      }
}

【问题讨论】:

    标签: java android serialization


    【解决方案1】:

    您的错误在于以下行。它在异常中很清楚。请检查一下

    final  SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
    

    envelope.getResponse() 返回SoapObject,您将其转换为SoapPrimitive

    【讨论】:

    • 我使用 SoapObject 结果=(SoapObject)envelope.getResponse();和 result.getProperty(1).toString()) 然后我收到 anyType{DocumentElement=anyType{Tabela=anyType{ID2=1; flgW=0;... 但我想将我的值放入新对象中。
    • 我听说我应该使用 XML Parser,这是最好的选择吗?
    • @boski 是的。那样就好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2012-03-10
    • 2012-06-23
    • 2012-09-09
    相关资源
    最近更新 更多