Android调用webService

Posted zhuhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android调用webService相关的知识,希望对你有一定的参考价值。

android调用WebService

首先你需要的东西。一个ksoap的jar包。下面提供了下载地址。

http://download.csdn.net/download/ty0038/10116757

下载jar包。复制项目lib文件夹下。右击jar包->add as library... 点击OK。

首先在需要在Manifest里面注册权限,以免后面忘记!

<uses-permission android:name="android.permission.INTERNET" />

接下来还是贴代码吧!代码中有注释

/*
* 天气webService
* */
public void tianqi(){
//命名空间
    String namespace = "http://WebXml.com.cn/";
String transUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
String method = "getSupportCity";
int envolopeVersion = SoapEnvelope.VER12;

String soapAction = "http://WebXml.com.cn/getSupportCity";
//指定webservice的命名空间和调用方法
    SoapObject request = new SoapObject(namespace,method);
//提交需要提交的参数
request.addProperty("byProvinceName","湖南");
//生产调用webService方法的SOAP请求信息,并指定SOAP的版本 ,这个版本 根据 asdl文件中是1.1还是1.2协议来指定的. 一般VER11或者VER12都可以,以前还有VER10
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(envolopeVersion);
envelope.setOutputSoapObject(request);
envelope.dotNet =true;
HttpTransportSE se = new HttpTransportSE(transUrl);
try {
  //ver11,第一个参数不能为空 。envolopeVersion为ver12第一个参数可以为空,必须接口支持ver12才行
se.call(null,envelope);
SoapObject response = (SoapObject) envelope.bodyIn;
//response的处理需要根据返回的具体情况,基本都要进行下面一步
SoapObject o = (SoapObject) response.getProperty(0);
Log.e("bbb","MainActivity.java->run():size="+o.getPropertyCount());
 //当前方法返回的结果为一个数组 
for (int i = 0; i<o.getPropertyCount();i++){
Log.e("bbb","MainActivity.java->run(): =="+o.getPropertyAsString(i));
result=result+o.getPropertyAsString(i);
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
最后调用这方法:
Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

new Thread(new Runnable() {
@Override
public void run() {
tianqi();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
resultView.setText(result);
}
});
}
}).start();
}
});

其中的名门空间里的字段是可以在
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL 中找到的。
targetNamespace="http://WebXml.com.cn/" 这个是namespace地址。
s:element name="getSupportCity" 以及各个方法名。
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 以及版本号12。
































































以上是关于Android调用webService的主要内容,如果未能解决你的问题,请参考以下文章

android调用webservice接口都有啥方式

java调用c#的webservice,如何传递DateTime

Android片段生命周期:onResume调用了两次

onActivityResult 未在 Android API 23 的片段上调用

Android 调用 Webservice的实现过程

在Android 中使用KSOAP2调用WebService(转)