- 浏览: 253586 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
android对web service的访问。使用ksoap2-android外部jar。
首先下载jar,附件就是。
加入到libs包中,然后加入classpath。
对客户端服务端web service进行编程。
提供最简单的login。
其后为android客户端编程。
提供布局文件
然后是实现。
在这里需要指出的是,在android 2.3以后对程序行为进行了规范。不允许主线程对网络等耗时操作进行了。
所以需要handler和多线程的配合。
另外,如果用户按钮点击过快的话,会导致服务器响应比较慢,所以需要设置一个flag和一个定时线程,来限制用户行为。
首先下载jar,附件就是。
加入到libs包中,然后加入classpath。
对客户端服务端web service进行编程。
提供最简单的login。
@WebService(name = "Login", targetNamespace = "http://li.duduli.com/") public interface Login { @WebMethod(operationName = "log", action = "urn:Log") public String log(@WebParam(name = "arg0") String name,@WebParam(name = "arg1") String password); }
@WebService(targetNamespace = "http://li.duduli.com/", endpointInterface = "com.duduli.li.Login", portName = "LoginImplPort", serviceName = "LoginImplService") public class LoginImpl implements Login { @Override public String log(String name, String password) { // TODO Auto-generated method stub if("duduli".equals(name) && "wiki".equals(password)){ System.out.println("success"); return "success"; }else{ System.out.println("failure"); return "failure"; } } }
其后为android客户端编程。
提供布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/userName" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="UserName" /> <EditText android:id="@+id/userName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:ems="10" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/userName" android:layout_marginTop="28dp" android:text="PassWord" /> <EditText android:id="@+id/passWord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView3" android:layout_alignBottom="@+id/textView3" android:layout_alignParentRight="true" android:ems="10" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:text="Button" /> <TextView android:id="@+id/retrunValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/passWord" android:layout_marginTop="32dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout>
然后是实现。
package com.duduli.li; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView tv,tv2; private Button b; private EditText name,password; private MyHandler myHandler; private HttpTransportSE ht; private boolean processFlag = true; // private Handler handler; private SoapSerializationEnvelope envelope; private static final String SERVICE_NS = "http://li.duduli.com/"; private static final String SERVICE_URL="http://10.0.2.2:8080/MyContact/services/LoginImplPort"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) this.findViewById(R.id.button1); tv = (TextView) this.findViewById(R.id.textView1); tv2 = (TextView) this.findViewById(R.id.retrunValue); name = (EditText) this.findViewById(R.id.userName); password = (EditText) this.findViewById(R.id.passWord); myHandler = new MyHandler(); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (processFlag) { processFlag = false;;// new Thread(new MyThread()).start(); new TimeThread().start(); }else{ Toast.makeText(getApplicationContext(), "你点击太快了", Toast.LENGTH_SHORT).show(); } } }); } class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); Bundle b = msg.getData(); tv2.setText(b.getString("value")); System.out.println(b.getString("value")); } } class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub Message msg = new Message(); Bundle b = new Bundle(); String values = ""; ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; //使用soap1.1协议创建Envelop对象 envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //实例化SoapObject对象 SoapObject request = new SoapObject(SERVICE_NS, "log"); request.addProperty("arg0", name.getText().toString()); request.addProperty("arg1", password.getText().toString()); envelope.bodyOut = request; //你要执行的方法 try { ht.call(null, envelope); if(envelope.getResponse()!=null){ SoapObject result = (SoapObject) envelope.bodyIn; values = result.getProperty(0).toString(); }else{ values = "nothing"; } b.putString("value", values); System.out.println("ok"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } msg.setData(b); // MainActivity.this.send myHandler.sendMessage(msg); } } /** * 计时线程(防止在一定时间段内重复点击按钮) */ private class TimeThread extends Thread { public void run() { try { sleep(1000); processFlag = true; } catch (Exception e) { e.printStackTrace(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
在这里需要指出的是,在android 2.3以后对程序行为进行了规范。不允许主线程对网络等耗时操作进行了。
所以需要handler和多线程的配合。
另外,如果用户按钮点击过快的话,会导致服务器响应比较慢,所以需要设置一个flag和一个定时线程,来限制用户行为。
- ksoap2-android.jar (151.7 KB)
- 下载次数: 5
发表评论
-
【android】访问web service(大概功能版)
2012-10-30 08:36 1324增加功能: 1,用户点击次数过快。提示。 2,增加progre ... -
【android】在2.3.3下面是用DDMS模拟位置会死机
2012-08-05 15:54 1014整了很久很久。每次都是死机。 调试也调试了很久,最后发现在2. ... -
【android】一个小问题让我纠结了很久
2012-03-20 09:43 1434之前处理cursor的方法:此方法是有问题的!!! pub ... -
【android】使用checkedTextView形成自定义ListView(续)
2012-03-15 10:06 4667前面的已经介绍了如何将check选中,但是很不尽如人意的是,每 ... -
【android】checkedTextView形成自定义ListView
2012-03-14 16:48 8753网络上的那个东西似乎都不准,以下是我做的此方法为可行。 首先, ... -
【android系统问题】呼叫状态变化
2012-03-09 14:09 1847测试。做一个Receiver监听手机通话状态。发现这样个问题。 ... -
【android】电话接听状态事件
2012-03-01 10:36 3296androidmanifest权限: <uses-per ... -
【android】自定义listView(转http://yilee.info/android-diy-listview.html)
2012-02-29 14:25 1588本文讲实现一个自定义列表的Android程序,程序将实现一个使 ... -
【android】 sqliter数据库CRUD
2012-02-27 16:16 1294基础类,DBHelper package com.duduli ... -
【android】以前没有注意的一个ListActivity的问题
2012-02-27 15:52 1333以前自己都很少使用ListActivity。今天使用的时候就出 ... -
【android】的startActivityForResult
2012-02-24 16:41 1180似乎这个做登录或是论坛回复很好的。 不用返回。 一下几点需要注 ... -
【android】widget生命周期
2012-02-23 17:07 3554在widget开发的时候生命周期如下: 第一次创建桌 ... -
【android】传感器
2011-12-03 10:41 992IBM develop 对android传感器的研究与开发。 ... -
【android】使用百度api获得你的地址
2011-12-02 12:06 3745采用百度开放平台的api对自己位置的定位的好处有很多。 1,完 ... -
【android】练手的小玩意
2011-11-30 16:17 1007这是个小程序,调用Google地图。显示你的大概位置。 当然不 ... -
【android】 百度地图应用开发(一)
2011-11-30 11:47 1716百度提供给我相当多的地图开发的api,比如地图,比如定位。 初 ... -
【android】利用service监听来电或来信息
2011-11-28 16:09 8035写这个东西只是为了练手,拍砖随意。反正自己也是菜鸟。 微信/Q ... -
【android地图】开发出现的问题。
2011-11-26 16:24 10722个问题,在虚拟机上没有这样的问题,但是到真机上实验的时候去出 ... -
android开发下的一些技术要点【如有需要会更新】
2011-11-14 15:36 38021,对于去title方法。在o ... -
android开发:Google天气获得气象信息
2011-11-07 16:21 1069这个只能算是半成品,之前想做一个wigdit的。可是没完成。 ...
相关推荐
android 用webservice连接后台数据库
Android客户端访问Web Service的实现.pdf
Android通过Webservices访问网络资源,解析返回来的数据,显示在组将上。
通过引入ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar包,访问web Service;取得输入手机号码的归属地。
android客户端访问服务器端Web Service所需的ksoap包, 至于怎么实现访问,可以看:http://blog.csdn.net/fwzkj
免费下载!包括所需的jar文件,Activity文件和布局资源xml!
访问web service代码
delphi XE5 ANDROID平台 调用 webservice并访问操作MSSQL数据库
Android中的互联网应用,讲述了Android中的各种网络应用,包括Socket、URL、HTTP、Web Service和WebView组件 第14章 Android中的GPS应用 Android中的GPS应用,讲述了LocationManager、LocationProvider、跟踪、...
全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web ...
全书内容覆盖了android用户界面编程、android四大组件、android资源访问、图形/图像处理、事件处理机制、android输入/输出处理、音频/视频多媒体应用开发、opengl与3d应用开发、网络通信编程、android平台的web ...
商品混凝土实时生产调度系统Web Service统一数据接口 数据接口:C# 数据库:SQL Server 访问机制:SOAP 面向设备:Android/iOS
在客户端与服务器间通过web Service进行通信,给出Android应用程序开发的完整过程,服务器端基于Java的SSM结构,利用Web Service实现访问接口,Android客户端通过Ksoap调用Web Service,并以网格化管理为例,最终...
Web Service工程实训项目 源代码(ADO.NET版) 修改基于Android的图书借阅管理系统\adminBookSystem\adminBookSystem\src\com\bn\lb\admin 下的HttpConnSoap.java里的String ServerUrl=...
labview调用webservice访问远程数据1
全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web ...
第8章 Android中的后台服务Service 8.1 Service的作用 8.2 Service的实现 8.2.1 创建Service 8.2.2 启动Service 8.3 Toast和Notification应用 8.3.1 使用Notification通知 用户服务启动 8.3.2 使用Toast显示通知信息...
Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及...
通过这个项目学习,使学员掌握Android平台中使用SAX方式解析XML文 件,熟练使用SOAP(Simple Object Access Protocol 简单对象访问协议)的Web Service来获取网络上的信息,熟练掌握adb等Android调试工具的使用。