- 浏览: 257802 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
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 1363增加功能: 1,用户点击次数过快。提示。 2,增加progre ... -
【android】在2.3.3下面是用DDMS模拟位置会死机
2012-08-05 15:54 1066整了很久很久。每次都是死机。 调试也调试了很久,最后发现在2. ... -
【android】一个小问题让我纠结了很久
2012-03-20 09:43 1481之前处理cursor的方法:此方法是有问题的!!! pub ... -
【android】使用checkedTextView形成自定义ListView(续)
2012-03-15 10:06 4718前面的已经介绍了如何将check选中,但是很不尽如人意的是,每 ... -
【android】checkedTextView形成自定义ListView
2012-03-14 16:48 8811网络上的那个东西似乎都不准,以下是我做的此方法为可行。 首先, ... -
【android系统问题】呼叫状态变化
2012-03-09 14:09 1892测试。做一个Receiver监听手机通话状态。发现这样个问题。 ... -
【android】电话接听状态事件
2012-03-01 10:36 3358androidmanifest权限: <uses-per ... -
【android】自定义listView(转http://yilee.info/android-diy-listview.html)
2012-02-29 14:25 1639本文讲实现一个自定义列表的Android程序,程序将实现一个使 ... -
【android】 sqliter数据库CRUD
2012-02-27 16:16 1334基础类,DBHelper package com.duduli ... -
【android】以前没有注意的一个ListActivity的问题
2012-02-27 15:52 1378以前自己都很少使用ListActivity。今天使用的时候就出 ... -
【android】的startActivityForResult
2012-02-24 16:41 1228似乎这个做登录或是论坛回复很好的。 不用返回。 一下几点需要注 ... -
【android】widget生命周期
2012-02-23 17:07 3587在widget开发的时候生命周期如下: 第一次创建桌 ... -
【android】传感器
2011-12-03 10:41 1026IBM develop 对android传感器的研究与开发。 ... -
【android】使用百度api获得你的地址
2011-12-02 12:06 3788采用百度开放平台的api对自己位置的定位的好处有很多。 1,完 ... -
【android】练手的小玩意
2011-11-30 16:17 1052这是个小程序,调用Google地图。显示你的大概位置。 当然不 ... -
【android】 百度地图应用开发(一)
2011-11-30 11:47 1759百度提供给我相当多的地图开发的api,比如地图,比如定位。 初 ... -
【android】利用service监听来电或来信息
2011-11-28 16:09 8102写这个东西只是为了练手,拍砖随意。反正自己也是菜鸟。 微信/Q ... -
【android地图】开发出现的问题。
2011-11-26 16:24 11212个问题,在虚拟机上没有这样的问题,但是到真机上实验的时候去出 ... -
android开发下的一些技术要点【如有需要会更新】
2011-11-14 15:36 38511,对于去title方法。在o ... -
android开发:Google天气获得气象信息
2011-11-07 16:21 1110这个只能算是半成品,之前想做一个wigdit的。可是没完成。 ...
相关推荐
在探讨Android客户端如何访问Web Service时,首先需要了解Android平台的基础知识以及Web Service的相关技术细节。以下知识点是根据文档提供的标题、描述、标签以及部分内容,按照要求详细说明Android客户端访问Web ...
Web Service ASMX 是一种基于.NET框架的Web服务技术,它允许开发者创建和部署Web服务,供其他应用程序(包括Android应用)调用。本教程将深入讲解如何在Android应用中访问ASMX类型的Web服务。 首先,我们要介绍关键...
从给定的内容来看,它主要提及了Android平台的应用开发,特别是关于如何使用Android 2.0版本的相关技术来开发应用程序,并且在很大程度上强调了Android在移动互联网时代的地位。这里包含的知识点可以分为以下几个...
在Android开发中,Web Service是一种常见的技术,用于让Android客户端应用程序与远程服务器进行通信,获取或发送数据。这里我们主要探讨Android与Web Service的交互,以及相关知识点。 首先,理解Web Service的概念...
4. **权限管理**:Android 6.0及以上版本需要动态申请网络访问权限(ACCESS_NETWORK_STATE和INTERNET)。源代码中应包含权限请求的逻辑。 5. **错误处理**:良好的错误处理机制是必不可少的,包括网络连接失败、...
通过以上步骤,你就可以利用Ksoap2在Android应用中访问Web Service,查询手机号码归属地。记住,实践是最好的老师,动手尝试编写代码并调试,遇到问题时查阅官方文档或社区资源,会进一步加深对Ksoap2的理解。
在Android开发中,调用Web Service是常见的需求,主要用于实现移动设备与服务器之间的数据交互。Web Service通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议,为不同...
综上所述,Android通过Webservices访问网络资源涉及网络编程基础、权限管理、数据解析、UI绑定等多个环节。了解并熟练掌握这些知识点,对于开发能高效访问网络的Android应用至关重要。在实际开发中,结合具体项目...
Web Service是一种常见的通信方式,而KSoap2则是Android平台下访问SOAP Web Service的首选库。本篇将详细介绍如何利用KSoap2库实现在Android客户端访问服务器端的Web Service。 首先,我们需要了解什么是SOAP...
在Android开发中,与WebAPI进行交互是常见的需求,例如获取服务器数据、发送用户信息等。本案例"Android请求WebAPI"将详细讲解如何在Android应用中实现这一功能。WebAPI通常指的是基于HTTP协议的RESTful API,允许...
"基于Android和Web Service的掌上校园系统的设计与实现" 本文主要介绍了基于Android和Web Service的掌上校园系统的设计与实现。随着移动互联网的高速发展和智能手机的普及,广大师生迫切希望能够通过手机平台来随时...
在安卓(Android)平台上开发应用时,调用Web Service是一项常见的任务,这通常涉及到与远程服务器进行数据交互,实现功能如登录验证、数据同步等。本压缩包中的源码提供了从Android应用程序中调用Web Service的示例...
Web Service的核心技术包括XML(可扩展标记语言)、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)以及UDDI(统一描述、发现和集成)。这些技术共同构成了Web Service的基础框架。 1.1 XML:XML是一种用于标记...
在Android开发中,调用Web Service是常见的数据交互方式,特别是对于需要远程获取或发送数据的应用来说至关重要。Web Service通常采用SOAP(Simple Object Access Protocol)或REST(Representational State ...
Delphi XE5 Android 平台调用 Webservice 并访问操作 MSSQL 数据库 Delphi XE5 是一款功能强大且灵活的开发环境,为开发者提供了跨平台的开发体验。在 Android 平台上,Delphi XE5 提供了强大的支持,允许开发者...
访问web service代码
在Android开发中,调用Web Service是常见的数据交互方式,特别是在需要与远程服务器进行数据交换时。本资源“安卓开发-从android中调用web service的源码.zip”提供了具体的实现示例,帮助开发者理解这一过程。以下...
在Android开发中,访问Web Services是一项常见的任务,用于与服务器端进行数据交互。Web Services可以是基于SOAP(简单对象访问协议)或者RESTful(表述性状态转移)的API,它们提供了一种跨平台、跨语言的数据交换...