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的主要内容,如果未能解决你的问题,请参考以下文章
java调用c#的webservice,如何传递DateTime