1

KSOAP2 ライブラリを使用して Android アプリからローカル Web サービス ASP.net (C#) を呼び出そうとしていますが、Web サービスから WebMethod を呼び出すと、次の例外が発生しました。

ここに画像の説明を入力

ここにメインのアクティビティコードがあります:

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.text.AlteredCharSequence;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;;

public class MainActivity extends Activity { 
    public static String result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                TextView TT = (TextView) findViewById(R.id.txt);
                try
                {
                    result = "START";
                    Caller CC = new Caller();
                    CC.join();
                    CC.start();
                    while (result == "START")
                    {
                        try
                        {
                            Thread.sleep(10);
                        }
                        catch (Exception s){}
                    }
                    TT.setText(result);
                }
                catch (Exception e)
                {
                    TT.setText(e.toString());
                }
            }
        });
    }
}

そしてここに呼び出し元クラスがあります:

public class Caller extends Thread {
    CallSoap SS;
    public void run (){
        try
        {
            SS = new CallSoap();
            MainActivity.result = SS.call();
        }
        catch (Exception ex)
        {
            MainActivity.result = ex.toString();
        }
    }
}

そして最後に CallSoap クラス:

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.serialization.PropertyInfo;

public class CallSoap {
    public final String SOAP_ACTION = "http://tempuri.org/Add";
    public  final String OPERATION_NAME = "Add"; 
    public  final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
    public  final String SOAP_ADDRESS = "http://10.0.2.2:9377/Service.asmx";
    public CallSoap () {

    }
    public String call ()
    {
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
        request.addProperty("a",100);
        request.addProperty("b",200);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        SoapPrimitive response=null;
        try
        {
           httpTransport.call(SOAP_ACTION, envelope);
           response = (SoapPrimitive) envelope.getResponse();
        }
        catch (Exception exception)
        {
           return exception.toString(); 
        }
       return response.toString();
    }
}

Web サービスからの Web メソッドの呼び出しは非常に単純です。2 つの整数を取り、それらの合計を返します。メソッド名はAdd、最初のパラメータはa、2 番目のパラメータはb

誰でもこの例外を助けることができますか?? :)

4

0 に答える 0