android中调用.net web service
来源:互联网 发布:sai for mac 最新版本 编辑:程序博客网 时间:2024/05/21 19:09
利用J2SE的ksoap2标准,做一个android连接webservice。
因为soap封装的关系,android application在接收到数据后不能够正确的按照J2SE的标准来获取。
在运用之前,我们先要引导两个jar进入工程的buildpath
commons-httpclient.jar
ksoap2-android-assembly-2.4-jar-with-dependencies.jar
这两个jar包都可以在网上查到下载,引导完后再做一项准备工作。
webservice接口:http://192.168.0.2:8080/axis2/services/Manager?wsdl
在android当中,不能写localhost,必须写清楚PC机当前的网络IP
在文件:AndroidManifest.xml放入:
<uses-permission android:name="android.permission.INTERNET"/>
天气预报WebService地址:http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx
package gcy.android;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
//显示结果的listview
ListView listView=null;
//输入文本框
EditText provinceEdit=null;
//用于存放数据的集合list
List<Map<String, Object>> data=null;
//提示对话框
ProgressDialog myDialog=null;
//搜索按钮
Button searchButton=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获得文本输入框
provinceEdit=(EditText) this.findViewById(R.id.provinceEdit);
//获得搜索按钮
searchButton=(Button) this.findViewById(R.id.searchButton);
//为搜索按钮添加单击监听事件
searchButton.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//响应按钮单击事件的函数
ResponseOnClick();
}
});
}
//响应按钮单击事件的函数
public void ResponseOnClick(){
//创建一个线程
HttpThread thread=new HttpThread(handler);
//构造请求参数
HashMap <String ,Object> params=new HashMap<String ,Object>();
try{
CharSequence etValue=provinceEdit.getText();
String name="";
if(etValue!=null){
//字符转码
name=new String(etValue.toString().getBytes(),"UTF-8");
}
params.put("byProvinceName", name);
}catch(Exception ex){
ex.printStackTrace();
}
//
String url="http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx";
// String url = "http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx";
String nameSpace = "http://WebXml.com.cn/";
String methodName = "getSupportCity";
// 开始新线程进行WebService请求
thread.doStart(url, nameSpace, methodName, params);
}
/**
* 捕获消息队列
*
*/
Handler handler=new Handler(){
public void handleMessage(Message m){
ArrayList <String> myList=(ArrayList<String>)m.getData().getStringArrayList("data");
if(myList !=null){
if(data !=null){
data.clear();
}else{
data=new ArrayList<Map <String, Object>>();
}
for(int i=0;i<myList.size();i++){
Map<String, Object> item=new HashMap<String, Object>();
item.put("text", myList.get(i));
data.add(item);
}
/**
* 列表显示
*
*/
SimpleAdapter simpleAdapter=new SimpleAdapter(MainActivity.this
,data,R.layout.listlayout,new String[] {"text"},new int []{R.id.showData});
listView=(ListView) findViewById(R.id.showListView);
listView.setAdapter(simpleAdapter);
}
}
};
/**
* 线程类
* @author Administrator
*
*/
public class HttpThread extends Thread{
private Handler handle=null;
String url=null;
String nameSpace=null;
String methodName=null;
HashMap <String ,Object> params=null;
ProgressDialog progressDialog=null;
//构造函数
public HttpThread(Handler hander){
handle=hander;
}
/**
* 启动线程
*/
public void doStart(String url, String nameSpace, String methodName,
HashMap<String, Object> params) {
// TODO Auto-generated method stub
this.url=url;
this.nameSpace=nameSpace;
this.methodName=methodName;
this.params=params;
progressDialog=ProgressDialog.show(MainActivity.this, "提示","正在请求请稍等......", true);
this.start();
}
/**
* 线程运行
*/
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("jack");
super.run();
try{
//web service请求
SoapObject result=(SoapObject) CallWebService();
//构造数据
ArrayList<String> list=null;
if(result !=null && result.getPropertyCount() > 0){
list=new ArrayList<String>();
for(int i=0;i<result.getPropertyCount();i++){
SoapPrimitive value=(SoapPrimitive) result.getProperty(i);
list.add(value.toString());
}
//a取消进度对话框
progressDialog.dismiss();
//构造消息
Message message=handle.obtainMessage();
Bundle b=new Bundle();
b.putStringArrayList("data", list);
message.setData(b);
handle.sendMessage(message);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
}
}
/**
* 请求web service
*/
protected Object CallWebService(){
String SOAP_ACTION = nameSpace + methodName;
//创建SoapObject实例
SoapObject request=new SoapObject(nameSpace,methodName);
//生成调用web service方法的soap请求消息
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置.net web service
envelope.dotNet=true;
//发送请求
envelope.setOutputSoapObject(request);
//请求参数
if(params != null && !params.isEmpty() ){
for(Iterator it=params.entrySet().iterator();it.hasNext();){
Map.Entry e=(Entry) it.next();
request.addProperty(e.getKey().toString(),e.getValue());
}
}
//
AndroidHttpTransport androidHttpTrandsport=new AndroidHttpTransport(url);
SoapObject result=null;
try{
//web service请求
androidHttpTrandsport.call(SOAP_ACTION, envelope);
//得到返回结果
result=(SoapObject) envelope.getResponse();
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fanweiwei/archive/2010/05/26/5624267.aspx
- android中调用.net web service
- android中调用.net web service
- Android 调用 Web Service
- java 调用.net web service
- java 调用.net Web Service
- 在ASP.NET Atlas中调用Web Service
- 在ASP.NET Atlas中调用Web Service
- Android中Web Service学习(二)——Android调用Web Service实例
- Android 调用web service 方法
- Android调用web service服务
- Android调用web service服务
- Android调用web service服务
- 从android中调用web service的源码
- 从android中调用web service的源码
- Silverlight中调用Web Service
- Android调用.net ASMX Service
- Axis调用.NET中的Web Service
- 动态调用WEB Service VB.NET版
- 克隆和多态 parent self intanceof final
- AppFuse占位
- 程序人生
- 如何删除Android系统中的私有应用程序
- 捕获异常方法
- android中调用.net web service
- Active Session History at work
- 使用WRAP工具对ORACLE代码进行加密
- 现在的活动靠谱么?破解淘123活动,实现自动邀请,汽车轻松到手
- C/C++中判断某一文件或目录是否存在
- foreach与for用法的区别
- 判断字符串中是否包含某些子串
- 有点浪费青春的嫌疑
- Efficiently Drawing Multiple Instances of Geometry (Direct3D 9)(英)