Android中webservice的简单使用以及使用handle在UI线程和子线程中传递数据
来源:互联网 发布:昆山远洋数据招聘信息 编辑:程序博客网 时间:2024/06/05 17:29
首先是导入webservice需要用的KSOAP包 下载地址在这里:http://pan.baidu.com/s/1hq64YS8
注意ADT18.0之后 导入包必须先放在工程根目录下的libs文件夹中 如果没有libs文件夹可以先创建一个 然后将jar包复制到libs文件夹 系统会自动导入
下面是一个简单的关于天气查询的代码:
package com.app.weatherproject;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.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.Spinner;import android.widget.TextView;public class MainActivity extends Activity {//定义控件变量private Button chaxun_button;private Spinner spinner;private static TextView myText;private String cityName;//定义一个handle变量用于在UI线程和子线程传递消息private Handler uiHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取控件myText = (TextView) findViewById(R.id.text_result);spinner = (Spinner) findViewById(R.id.spinner_city);ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.citys, android.R.layout.select_dialog_item);//这里的R.arrays.citys 是我在String.xml文件里写的一个xml数组adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);spinner.setOnItemSelectedListener(new OnItemSelectedListener() {@Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { cityName =spinner.getSelectedItem().toString();<span style="white-space:pre"></span>//从spinner控件中 获取用户选择的城市
} @Override public void onNothingSelected(AdapterView<?> arg0) { cityName = "北京"; } });chaxun_button = (Button) findViewById(R.id.button_chaxun);chaxun_button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {uiHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Bundle bundle = msg.getData();String temp = bundle.getString("weather");myText.setText(temp);}};
<span style="white-space:pre"></span>//新建一个线程 用于获取webservice返回的数据new Thread(new Runnable() {@Overridepublic void run() {String result=null;try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}try {result = getWeather(cityName);} catch (UnsupportedEncodingException e) {e.printStackTrace();}Message msg = new Message();Bundle bundle = new Bundle();bundle.putString("weather", result);msg.setData(bundle);uiHandler.sendMessage(msg);}}).start();}});}private static final String NAMESPACE = "http://WebXml.com.cn/";// 你需要调用的接口网址private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";<span style="white-space:pre"></span>//该网站提供给你的方法名称(你需要哪个就定义哪个)private static final String METHOD_NAME = "getWeatherbyCityName";private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";private String weatherToday;private SoapObject detail;public String getWeather(String cityName) throws UnsupportedEncodingException{try {
<span style="white-space:pre"></span>//命名空间 和 你需要调用的接口方法名字 关于这个命名空间 我也不是很清楚是个什么东西 等以后了解更多了 再来看看SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("theCityName", cityName);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = request;envelope.dotNet = true;envelope.setOutputSoapObject(request);HttpTransportSE ht = new HttpTransportSE(URL);ht.debug = true;ht.call(SOAP_ACTION, envelope);
<span style="white-space:pre"></span>//这里就是接收数据了SoapObject result = (SoapObject) envelope.bodyIn;
<span style="white-space:pre"></span>//处理数据detail = (SoapObject) result.getProperty("getWeatherbyCityNameResult");weatherToday = detail.getProperty(6).toString()+" "+detail.getProperty(5).toString()+"\n";weatherToday = weatherToday+detail.getProperty(10).toString()+"\n";String temp = detail.getProperty(11).toString();weatherToday = weatherToday+temp;} catch (Exception e) {e.printStackTrace();}
<span style="white-space:pre"></span>//返回整理后的信息return weatherToday;}}
0 0
- Android中webservice的简单使用以及使用handle在UI线程和子线程中传递数据
- Android中webservice的简单使用以及使用handle在UI线程和子线程中传递数据
- Android使用技巧------Activity中怎么样在子线程和UI线程中来回自如
- Android中怎么使用Looper和Handler进行子线程数据操作和提交到UI线程
- Android 在子线程中更新UI的方式,使用handler
- android 在线程中调用handle更新UI
- 线程基本用法 以及在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用AsyncTask在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用Handler在子线程中更新UI
- 使用异步消息机制在子线程中更新UI
- android-----在子线程中更新UI操作的方法
- Android线程模型--在子线程中更新UI
- Android 子线程更新UI:handle和runOnUiThread()
- Android 子线程中操作UI线程
- 视图与窗口的基础
- exchange2003安装
- CSS编码顺序研究,提高CSS编码效率
- 用户体验的5个注意事项
- C#中获取IP
- Android中webservice的简单使用以及使用handle在UI线程和子线程中传递数据
- java设计模式之门面模式
- myeclipse2014 集成maven 遇到的问题,解决方案
- poj 1061 青蛙的约会(拓展欧几里德)
- 002. 斐波那契数列中的偶数
- exchange2003配置
- VC++屏蔽某个键
- hdu 1429 胜利大逃亡(续)
- 如何写出更好的Java代码