Android调用webService

zhuhao0812 · · 166 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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。



本文来自:博客园

感谢作者:zhuhao0812

查看原文:Android调用webService

166 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet