Android使用SOAP webservice
一、在lib添加KSOAP jar包
链接:https://pan.baidu.com/s/1zuRpfEylf-eReR_-eErwoQ
提取码:06cu
二、在Activity中声明:
//声明命名空间
private String NameSpace = "http://tempuri.org/";
//声明使用的方法
private String MethodName = "getgongys";
//声明SoapObject
SoapObject response = null;
//将NameSpace 和MethodName 拼接,形成soapAction
private String soapAction = NameSpace + MethodName;
三、 具体使用:(惯用的使用手法)
(1)使用线程的方式调用webservice:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//声明一个result对象接收结果
Object result = null;
SoapObject request = new SoapObject(NameSpace, MethodName);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置是否调用的是dotNet下的WebService
envelope.dotNet = true;//必须,等价于envelope.bodyOut = request;
//向request中添加参数:这里的根据实际的webservice要求
request.addProperty("bm",txtEditText.getText().toString());
//request.addProperty("spec",txtspec.getText().toString());
envelope.setOutputSoapObject(request);
//step4 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(Sysvar.url);
//step5 调用WebService
try {
response=null;
ht.call(soapAction, envelope);
if(envelope.getResponse()!=null){
//集合用SoapObject
response = (SoapObject) envelope.getResponse();
//单个数据
// result = (Object) envelope.getResponse();
}
} catch (IOException e) {
// TODO Auto-generated catch block
Log.v("tag", e.toString());
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//我这边是通过handler的方式传值回去进行UI更新和其他操作
Message message = new Message();
message.what =0;
//message.obj=result;
mHandler.sendMessage(message);
}
});
//开启线程
thread.start();
(2)在handler中使用webservice中返回的值
/****************多线程反馈*************************************/
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
ArrayList<Vendor> vendors=new ArrayList<Vendor>();
int i= response.getPropertyCount();
for (int j = 0; j < i; j++) {
// aList.add((serch)response.getProperty(j).toString())
// Log.v("tag", response.getProperty(j).toString());
//用一个SoapObject接收返回结果
SoapObject result1= (SoapObject)response.getProperty(j);
//具体接收数据由实际情况决定,这只是格式
Vendor ssVendor=new Vendor();
ssVendor.setVendorcode(result1.getProperty(0).toString());
ssVendor.setVendornameString(result1.getProperty(1).toString());
ssVendor.setRmbString(result1.getProperty(2).toString());
vendors.add(ssVendor);
// Toast.makeText(Kin.this, result1.getProperty(1).toString(), Toast.LENGTH_SHORT).show();
}
// Intent it=new Intent(Kin.this,Gongyingshua.class);
// it.putExtra("ss", vendors);
// startActivityForResult(it, 0);
addtable(vendors);
myProgressDialog.dismiss();
break;
}
}
};

浙公网安备 33010602011771号