0

私はすでに.net c#を使用して開発したasmxを使用しており、うまく機能しています

しかし、Java Androidエラーを使用して呼び出す必要があるときにエラーが見つかりました: java.lang.ClassCastException:org.ksoap2.serialization.SoapObject cannot be cast to org.ksoap2.serialization.SoapPrimitive

私のasmxに表示される結果:

<customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<customerID>1</customerID>
<companyName>ABC</companyName>
<contactName>Jack</contactName>
<customerID>2</customerID>
<companyName>SS Company</companyName>
<contactName>Mary</contactName>
</customer>

私のJava cs:

        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView)findViewById(R.id.textView1);

        SoapObject Request = new SoapObject (NAMESPACE, METHOD_NAME);
        Request.addProperty("custID", "member");

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        AndroidHttpTransport aht = new AndroidHttpTransport(URL);

        try
        {
         aht.call(SOAP_ACTION, soapEnvelope);
        SoapObject resultString = (SoapObject) soapEnvelope.getResponse();
        tv.setText(resultString.toString());
        }
        catch(Exception e)
        {
            tv.setText(e.toString());          
        }                 
    }

http://www.w3schools.com/webservices/tempconvert.asmxを使用すると、上記のコードが機能します

4

3 に答える 3

1

私はそれを解決しました

           SoapObject resultString = (SoapObject) soapEnvelope.getResponse();           

            String addon = "";
            for(int i =0;i<resultString.getPropertyCount();i++)
            {                            
                SoapObject array2 = (SoapObject) resultString .getProperty(i);              
                addon = (addon + "ID = " + array2.getProperty(0).toString() + array2.getProperty(1).toString() + array2.getProperty(2).toString() + "\n");  
            }
            tv.setText(addon.toString());
于 2012-05-15T09:02:32.387 に答える
0

複雑なオブジェクトを解析する必要があるようです。Customerインターフェイスを実装するクラスを作成する必要がありKvmSerializableます。これを見てみましょう: http://seesharpgears.blogspot.com.es/2010/10/ksoap-android-web-service-tutorial-with.html

于 2012-05-14T14:22:34.773 に答える
0

1) userTypecustIDに変更します。これはあなたのせいです。

これをテストします。

このような状況では、ksoap2 シリアライザーは、返された文字列を有効な xml 文字列に変換できません。

2)これを試してください:

aht.call(SOAP_ACTION, soapEnvelope);
SoapObject resultString = (SoapObject) soapEnvelope.getResponse();
tv.setText(resultString.getPropertyAsString("customerID"));  
于 2012-05-14T10:23:04.677 に答える