80,351
社区成员
发帖
与我相关
我的任务
分享
private String strMethodName;
private void StartThread() throws Exception
{
new Thread(MyGetInfo).start();
}
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
try{
Bundle data = msg.getData();
String result = data.getString("value");
if (msg.obj.toString().equalsIgnoreCase("方法1")){
//取得结果
}
else if (msg.obj.toString().equalsIgnoreCase("方法2")) {
//取得结果
}
}
catch (Exception e)
{
}
}
};
Runnable MyGetInfo = new Runnable()
{
@Override
public void run()
{
String result = "";
try
{
//命名空间
String nameSpace = "http://test.com/";
//调用的方法名称
String methodName = strMethodName;
//EndPoint
String endPoint = "http://" + ServerIp + ":13188/Service.asmx";
//SOAP Action
String soapAction = nameSpace + strMethodName;
//指定WebService的命名空间和调用的方法名
SoapObject rpc = new SoapObject(nameSpace, methodName);
//生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.encodingStyle = "UTF-8";
envelope.bodyOut = rpc;
//设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
envelope.bodyOut = rpc;
//等价于envelope.bodyOut = rpc;
//envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(endPoint);
//transport.debug = true;
// 调用WebService
transport.call(soapAction, envelope);
// 获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
result = object.getProperty(0).toString();
}
catch (Exception e)
{
result = "error:" + e.toString();
}
finally
{
Message msg = new Message();
Bundle data = new Bundle();
data.putString("value",result);
msg.setData(data);
msg.obj = strMethodName;
handler.sendMessage(msg);
}
}
};