package com.example.ksoap2demo;

import java.io.UnsupportedEncodingException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button okButton; // 命名空间
private static final String NAMESPACE = "http://WebXml.com.cn/"; // WebService地址
private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx"; // 方法
private static final String METHOD_NAME = "getWeatherbyCityName"; /**
* SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"
*/
private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName"; private String weatherToday; private SoapObject detail; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 查询按钮
okButton = (Button) this.findViewById(R.id.btn_Search);
okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
String city = "北京";
getWeather(city);
}
}); } public void getWeather(final String cityName) {
new Thread(new Runnable() { public void run() {
try {
System.out.println("rpc------");
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
System.out.println("rpc..." + rpc);
System.out.println("cityName is... " + cityName); rpc.addProperty("theCityName", cityName); /**
* 生成调用Webservice方法的SOAP请求信息
*
* 创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协议的版本号
* 。 该版本号需要根据服务端WebService的版本号设置。
* 在创建SoapSerializationEnvelope对象后
* ,不要忘了设置SOAPSoapSerializationEnvelope类的bodyOut属性,
* 该属性的值就是在第一步创建的SoapObject对象。
*/
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.setOutputSoapObject(rpc); HttpTransportSE ht = new HttpTransportSE(URL); ht.debug = true; ht.call(SOAP_ACTION, envelope); detail = (SoapObject) envelope.getResponse(); parseWeather(detail); return;
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
} private void parseWeather(SoapObject detail)
throws UnsupportedEncodingException {
String date = detail.getProperty(6).toString();
weatherToday = "今天:" + date.split(" ")[0];
weatherToday = weatherToday + "\n天气:" + date.split(" ")[1];
weatherToday = weatherToday + "\n气温:"
+ detail.getProperty(5).toString();
weatherToday = weatherToday + "\n风力:"
+ detail.getProperty(7).toString() + "\n";
System.out.println("weatherToday is " + weatherToday); getWindow().getDecorView().post(new Runnable() { public void run() {
Toast.makeText(getWindow().getDecorView().getContext(),
weatherToday, Toast.LENGTH_LONG).show(); }
}); } }

JAR包下载:http://download.csdn.net/detail/androidsj/6239751

最新文章

  1. 将List转换为二维数组(result)
  2. 将Microsoft Ajax Minifier集成到VS2013对JS、CSS进行编译时压缩
  3. ElasticSearch学习问题记录——nested查询不到数据
  4. [jQuery学习系列六]6-jQuery实际操作小案例
  5. BZOJ 4337: BJOI2015 树的同构 树hash
  6. HTML5[7]: 实现网页版的加载更多
  7. band
  8. 导入Android工程源码出现乱码问题的解决方法
  9. Insert Interval 面试题leetcode.
  10. MYSQL 的 6 个返回时间日期函数
  11. auto_ptr and scoped_ptr
  12. 【LeetCode】 String中的最长回文
  13. SpringMVC文件上传报错org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
  14. ssh爆破篇
  15. Golang websocket推送
  16. Delphi 字母 递增 递减算法
  17. js基础知识1:标识符 注释
  18. git恢复某个已修改的文件--备忘
  19. 每日质量NPM包复制_copy-to-clipboard
  20. 10.DataGrid的特性

热门文章

  1. struts2 ValueStack的作用
  2. FTP命令使用详解
  3. MongoDB - 内嵌角色
  4. Web App、Hybrid App、Native APP对比
  5. C#将URL中的参数转换成字典Dictionary<string, string>
  6. Linux高性能server编程——I/O复用
  7. Hadoop--mapreduce编程实例1
  8. 3G模块(U6300)linux下拨号上网
  9. thinkphp5 No input file specified.
  10. 【JMeter4.0】之遇到的问题总结(持续更新)