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
誰でもこの例外を助けることができますか?? :)