android 调用.NET WebServices
下载Ksoap2.jar,
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.HttpTransportSE;
import android.os.Handler;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bundle bundle= msg.getData();
String result=bundle.getString("result");
Toast.makeText(LoginActivity.this,result,Toast.LENGTH_SHORT).show();
}
};
new Thread() {
public void run() {
String Namespace = "http://tempuri.org/";
String MethodName = "UserLogin";
String WEB_SERVICE_URL = "http://192.168.4.2/myWeb/User.asmx";
SoapObject request = new SoapObject(Namespace, MethodName);
// 2、设置调用方法的参数值,如果没有参数,可以省略,
// 3、生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
envelope.bodyOut = request;
// c#写的应用程序必须加上这句
envelope.dotNet = true;
HttpTransportSE ht = new HttpTransportSE(WEB_SERVICE_URL);
// 使用call方法调用WebService方法
try {
ht.call(null, envelope);
} catch (Exception e) {
e.printStackTrace();
}
try {
final SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
if (result != null) {
Log.d("----收到的回复----", result.toString());
Message message=new Message();
Bundle bundle=new Bundle();
bundle.putString("result",result.toString());
message.setData(bundle);
handler.sendMessage(message);
}
} catch (Exception e) {
Log.e("----发生错误---", e.getMessage());
e.printStackTrace();
}
}
}.start();