0

Android コードから Web サービスを呼び出す際に問題が発生しています。私のWeb サービス コードは、区切り文字 '#' で区切られた文字列を返します。ここで、Web サービスを呼び出すコードを Android で作成する必要があります。ユーザーが選択するチェック ボックスを使用して実際の名前が表示されるように、区切り記号を区切ります。

これが私のAndroidコードです:

package com.app;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class TestApp extends Activity {
private static final String SOAP_ACTION = "http://tempuri.org/getData";




  private static final String METHOD_NAME = "getData";


    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://10.0.2.2/login2/Service1.asmx";
    TextView tv;

    boolean[] bln1=null;

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

        call();

        String[] arr={""};
        boolean[] bln = {false, false, false};

       bln1 = new boolean[arr.length];


        new AlertDialog.Builder(TestApp.this)
        .setIcon(R.drawable.alert_dialog_icon)
        .setTitle("Title")
        .setMultiChoiceItems(arr,
                bln,
                new DialogInterface.OnMultiChoiceClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton,
                            boolean isChecked) {


                        if(isChecked){
                            bln1[whichButton] = true;
                        }
                        else{
                            bln1[whichButton] = false;
                        }
                    }
                })
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {


            }
        })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {


            }
        })
       .show();


    }




    public void call()
    {
        try {

            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

            //request.addProperty("passonString", "Hello Android");



            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);

            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION, envelope);

            Object result = (Object)envelope.getResponse();


            tv.setText(result.toString());
        } catch (Exception e) {
            tv.setText(e.getMessage());
            }
    }
}
4

1 に答える 1

1

ケーシングからオブジェクトへのObject result = (Object)envelope.getResponse();キャストの代わりに

  SoapPrimitive responsesData = (SoapPrimitive) envelopes.getResponse();
  String result = responsesData .toString();
于 2011-08-01T06:03:56.337 に答える