咱们并不讨论如何去搭建一个WebService,咱们仅仅知道如何去获取WebService提供的服务, 而后解析返回的XML数据,而后把相关数据显示到咱们的Android设备上就好!web
首先若是想在Android平台上调用WebService须要依赖于第三方类库:ksoap2 而在Android平台上,使用的是ksoap2 Android,一个高效,轻量级的SOAP开发包! 这个连接永久有效,里面有两个版本的Jar包,我用的是老一点版本的,没有任何问题,彻底能够用。新的版本你们能够去本身用一下,应该问题不大。 连接:https://pan.baidu.com/s/1kUPrui7 密码:lajx浏览器
这里我用的是Android Studio,直接上代码吧bash
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setXTContentView(R.layout.login_forreject);
init();
}
//定义一个Handler用来更新页面:
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x001:
// txt_result.setText("结果显示:\n" + result);
Toast.makeText(LoginForRejectActivity.this, "获取天气信息成功", Toast.LENGTH_SHORT).show();
break;
case 0x002:
// txt_result.setText("结果显示:\n" + result);
Toast.makeText(LoginForRejectActivity.this, "号码归属地查询成功", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};
private void init() {
// 开启一个子线程,进行网络操做,等待有返回结果,使用handler通知UI
new Thread(networkTask).start();
}
/**
* 网络操做相关的子线程
*/
Runnable networkTask = new Runnable() {
@Override
public void run() {
// TODO
// 在这里进行 http request.网络请求相关操做
getRejectInfo();
}
};
private void getRejectInfo() {
// 命名空间
String nameSpace = "http://tempuri.org/";
// 调用的方法名称
String methodName = "Test";
// EndPoint
String endPoint = "http://192.168.1.164:8080/RejectWebService.asmx";
// SOAP Action
String soapAction = "http://tempuri.org/Test";
// 指定WebService的命名空间和调用的方法名
SoapObject rpc = new SoapObject(nameSpace, methodName);
// 设置需调用WebService接口须要传入的三个参数devicedCode、carCode、typed
rpc.addProperty("devicedCode", "dff233423238709092");//设备编码
rpc.addProperty("carCode", "2312kjj234kjdf");//条码
rpc.addProperty("typed", 0);// 箱码是1,瓶码是0
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(endPoint);
try {
// 调用WebService
transport.call(soapAction, envelope);//ver11,第一个参数不能为空
// transport.call(null, envelope);//envolopeVersion为ver12第一个参数能够为空,必须接口支持ver12才行
// 获取返回的数据
SoapObject response = (SoapObject) envelope.bodyIn;
Log.e(TAG, "getRejectInfo: object========"+ response);
//response的处理须要根据返回的具体状况,基本都要进行下面一步
SoapObject o = (SoapObject) response.getProperty(0);
Log.e(TAG, "getRejectInfo: o==========" + o);
handler.sendEmptyMessage(0x001);
// 获取返回的结果
// String result = object.getProperty(0).toString();
// Log.e(TAG, "getRejectInfo: result=============="+ result );
// 将WebService返回的结果显示在TextView中
// resultView.setText(result);
} catch (Exception e) {
e.printStackTrace();
}
}
复制代码
"http://192.168.1.164:8080/RejectWebService.asmx" 后台会给你,你能够在后面加“ ?wsdl ”,个人是这样的: http://192.168.1.164:8080/RejectWebService.asmx?wsdl 而后在浏览器中打开就能够获得以下图片所示: 网络
1:表示的是调用的方法名称 methodName 2:表示的是soapAction 3:表示的是命名空间nameSpaceide
另外,别忘了导包和Internet的权限! 是否是很简单,小伙伴们!ui
在全部的作别里,我仍是最喜欢明天见。承蒙你出现,够我喜欢好多年 。this