android怎样用webservice易语言连接网络数据库库

android是如何操作网络数据库,有那些方法以?大侠们讲解下
[问题点数:40分]
android是如何操作网络数据库,有那些方法以?大侠们讲解下
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年6月 移动开发大版内专家分月排行榜第一2014年3月 移动开发大版内专家分月排行榜第一
2014年11月 移动开发大版内专家分月排行榜第二2014年4月 移动开发大版内专家分月排行榜第二2014年2月 移动开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。下次自动登录
现在的位置:
& 综合 & 正文
Android调用WebService(图文教程)
WebService服务端的建立
创建一个WebService项目
在myeclipse中进行 File--&new--&Web Service Project进入如下界面填写工程名之后直接完成即可。
接着建立需要的各种类。跟常规建类的方法没有区别
项目名称--&src目录下右击--&new--&Class
我这里建立两个类一个是主要的操作类,一个是模拟的entity类
主类操作类
package com.demo.
import java.util.ArrayL
import java.util.L
import com.demo.test.entity.UserI
public class Test {
public String getNumString() {
return "";
* 获取用户信息
public List&UserInfo& getUser() {
List&UserInfo& list = new ArrayList&UserInfo&();
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setUserName("张三");
userInfo.setPassword("123");
userInfo.setSex("男");
userInfo.setAge(19);
list.add(userInfo);
userInfo = new UserInfo();
userInfo.setId(2);
userInfo.setUserName("李四");
userInfo.setPassword("456");
userInfo.setSex("女");
userInfo.setAge(18);
list.add(userInfo);
* 根据ID获取用户信息
public UserInfo getUserById(int id) {
UserInfo userInfo = new UserInfo();
userInfo.setId(id);
userInfo.setUserName("虚拟用户:张三");
userInfo.setPassword("123");
userInfo.setSex("男");
userInfo.setAge(19);
return userI
其中定义了三个方法,是为了进行测试用的,首先第一种方法是单纯的返回一个字符串,第二个方法是返回一个List,第三个方法是经过传入参数来查找用户。
上面用到的entity如下
UserInfo.java
package com.demo.test.
public class UserInfo {
private int id = 0;
private String userName =
private String password =
private int age = 18;
private String sex =
public int getId() {
public void setId(int id) {
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public String getPassword() {
public void setPassword(String password) {
this.password =
public int getAge() {
public void setAge(int age) {
this.age =
public String getSex() {
public void setSex(String sex) {
this.sex =
接下来的操作才是重点
首先建立webservice服务
接着选择new Web Service进入如下界面 并且在strategy中选择第二个(根据java文件创立webservice)
接着进行下一步
在java class中选择已经写好的test.java类 并且选中Generate wsdl in project.最后点击finish
到这一步webservice已经开发的差不多了。最后一步 需要添加jar包
右击项目名--&build path--&Configure Build Path...--&Add Library--&Myeclipse Libraries--&然后选择关于JAX-WS的两个包
详细配置如下:
在此需要说明一点TestDelegate.java类是自动生成的,其中记录了很多重要的信息。
如Namespace、URL、portName等等
package com.demo.
import java.util.ArrayL
import java.util.L
import com.demo.test.entity.UserI
@javax.jws.WebService(targetNamespace = "/", serviceName = "TestService", portName = "TestPort", wsdlLocation = "WEB-INF/wsdl/TestService.wsdl")
public class TestDelegate {
com.demo.test.Test test = new com.demo.test.Test();
public String getNumString() {
return test.getNumString();
public List&UserInfo& getUser() {
return test.getUser();
public UserInfo getUserById(int id) {
return test.getUserById(id);
至此,webService已经开发完毕了 接着将项目部署到tomcat中,然后开启tomcat 接着访问
如果看到以下界面说明已经WebService已经开发完成了。
接着下来是开发Android端
在Android开发的时候这里需要使用一个jar包
下载该夹包可以直接登录,现在该站点已经提供了直接的下载,只要点击下载链接就可以下载了;
百度网盘地址:(ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar)
android中通过webservice调用服务器端其实还是很简单的,只要按部就班的按照下面步骤进行即可:
(1)创建HttpTransportSE对象,该对象用于调用WebService操作
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
(2)创建SoapSerializationEnvelope对象
// 使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
(3)创建SoapObject对象,创建该对象时需要传入所要调用的Web Service的命名空间和WebService方法名
// 实例化SoapObject对象
SoapObject object = new SoapObject(SERVICE_NAMESPACE, mathodName);
(4)如果有参数传给Web Service服务器端,调用SoapObject对象的addProperty(String name, Object value)方法来设置参数,该方法的name参数指定参数名
  注意:参数名不一定要与服务端的方法中的参数名相同,只要对应顺序相同即可;value参数指定参数值
// 设置参数
object.addProperty("id", 1);
(5)调用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前两步创建的SoapObject对象设为SoapSerializationEnvelope
  的传出SOAP消息体
// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut =
(6)调用对象的call()方法,并以SoapSerializationEnvelope作为参数调用远程的web service
// 调用webService
ht.call(null, envelope);
(7)掉用完成后,访问SoapSerializationEnvelope对象的bodyIn属性,该属性返回一个SoapObject对象,该对象就代表Web service的返回消息,解析该对象,即可获得
  调用web service的返回值
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();
以上步骤参照 可以去看看
下来为实例
activity_main.xml
&ScrollView xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" &
&RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" &
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /&
android:id="@+id/edit1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/hello"
android:inputType="textMultiLine" /&
android:id="@+id/edit2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/edit1"
android:inputType="textMultiLine" /&
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/edit2"
android:layout_below="@+id/edit2"
android:text="无参数查询" /&
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignRight="@+id/edit2"
android:text="有参数查询" /&
&/RelativeLayout&
&/ScrollView&
此代码中定义了调用了WebService服务端的三个代码
1、当用户刚开始进入的时候默认调用返回字符串的方法getNumString(0
2、当用户点击无参数查询的时候调用List&UserInfo& getUser() 方法返回一个List
3、当用户点击有参数查询的时候调用UserInfo getUserById(int id) 方法,传参查找具体内容
MainActivity.java
package com.demo.
import java.io.IOE
import org.ksoap2.SoapE
import org.ksoap2.serialization.SoapO
import org.ksoap2.serialization.SoapSerializationE
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserE
import android.annotation.SuppressL
import android.app.A
import android.os.B
import android.os.B
import android.os.StrictM
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
@SuppressLint("NewApi")
public class MainActivity extends Activity {
// 在webService服务端中可以找到NAMESPAC的具体内容
private static final String SERVICE_NAMESPACE = "/";
private static final String SERVICE_URL = "http://192.168.1.104:8080/WebServicePro/TestPort?wsdl";
private EditText edit1 =
private EditText edit2 =
private Button btn1 =
private Button btn2 =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit1 = (EditText) findViewById(R.id.edit1);
edit2 = (EditText) findViewById(R.id.edit2);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
// 如果本系统为4.0以上(Build.VERSION_CODES.ICE_CREAM_SANDWICH为android4.0)
if (Build.VERSION.SDK_INT & Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// 详见StrictMode文档
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
.penaltyLog().penaltyDeath().build());
// 调用的方法
String mathodName = "getNumString";
// 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
ht.debug =
// 使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject object = new SoapObject(SERVICE_NAMESPACE, mathodName);
// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut =
// 调用webService
ht.call(null, envelope);
System.out.println("envelope.getResponse()---"
+ envelope.getResponse());
if (envelope.getResponse() != null) {
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();
edit1.setText("返回值为:" + name);
edit1.setText("无返回值");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 调用的方法
String mathodName = "getUser";
// 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
ht.debug =
// 使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject object = new SoapObject(SERVICE_NAMESPACE, mathodName);
// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut =
// 调用webService
ht.call(null, envelope);
edit2.setText("回传的值 :"+envelope.getResponse());
if (envelope.getResponse() != null) {
SoapObject result = (SoapObject) envelope.bodyIn;
StringBuilder sb = new StringBuilder();
for (int i = 0; i & result.getPropertyCount(); i++) {
SoapObject msg = (SoapObject) result.getProperty(i);
if (msg != null) {
sb.append("名称[").append(i).append("]\t\t").append(msg.getProperty(4).toString()).append("\n");
sb.append("年龄[").append(i).append("]\t\t").append(msg.getProperty(0).toString()).append("\n");
sb.append("ID[").append(i).append("]\t\t").append(msg.getProperty(1).toString()).append("\n");
sb.append("密码[").append(i).append("]\t\t").append(msg.getProperty(2).toString()).append("\n");
sb.append("性别[").append(i).append("]\t\t").append(msg.getProperty(3).toString()).append("\n").append("\n");
edit1.setText(sb);
edit1.setText("无返回");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
btn2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 调用的方法
String mathodName = "getUserById";
// 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
ht.debug =
// 使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// 实例化SoapObject对象
SoapObject object = new SoapObject(SERVICE_NAMESPACE, mathodName);
// 设置参数
object.addProperty("id", 1);
// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut =
// 调用webService
ht.call(null, envelope);
edit2.setText("回传的值 :"+envelope.getResponse());
if (envelope.getResponse() != null) {
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject msg = (SoapObject) result.getProperty(0);
StringBuilder sb = new StringBuilder();
sb.append("名称\t\t").append(msg.getProperty(4).toString()).append("\n");
sb.append("年龄\t\t").append(msg.getProperty(0).toString()).append("\n");
sb.append("I
D\t\t").append(msg.getProperty(1).toString()).append("\n");
sb.append("密码\t\t").append(msg.getProperty(2).toString()).append("\n");
sb.append("性别\t\t").append(msg.getProperty(3).toString()).append("\n").append("\n");
edit1.setText(sb);
edit1.setText("无返回");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
最后在AndroidManifest.xml中加入访问网络权限
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.demo.webserviceclient"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="17" /&
&application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &
android:name="com.demo.webserviceclient.MainActivity"
android:label="@string/app_name" &
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&/application&
&!-- 声明该应用自身所拥有的权限 --&
&uses-permission android:name="android.permission.INTERNET" /&
&/manifest&
运行结果如下:初始界面
当点击无参数查询的时候运行结果如下(因为使用了ScrollView,因此可以上下滚动)
当点击了有参数查询的时候
PS:getPropert的使用次数至关重要,这里主要看返回值的层次,没有掌握的时候可以debug调试跟跟代码进行增加减。
如果不对会产生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot的错误提示。进入debug中调试调试就ok了。
PPS:以上的代码其实还是不健全的,会发现调用service中方法时传参为null
因为细心的话就可以发现,在有参数查询的时候参数的值并没有传过去,其实就是这句代码
// 设置参数
object.addProperty("id", 1);
当将参数名与服务器端保持一致,但不成功
但是当这里的参数设置为arg0、arg1、arg2……argn的时候竟然是正确的。
正确代码如下:
// 设置参数object.addProperty("arg0", 1);
截图在这里就不截了,内容就是上面图中的id=0显示为id=1
&&&&推荐文章:
【上篇】【下篇】android连接WebService不成功,求助
[问题点数:40分,结帖人nanmosiam]
android连接WebService不成功,求助
[问题点数:40分,结帖人nanmosiam]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年12月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Android用webservice实现与数据库的连接_android开发吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
Android用webservice实现与数据库的连接收藏
各位大神,小弟最近要做一个公交管理系统,里面的数据都是在本地电脑,想要实现数据库的连接,该怎么做啊.有代码可以发我。万分感谢
android不能直接对网络数据库进行访问的,需要服务器端开发提供接口,数据格式基本就是用JSON
感觉没必要用webservice吧。直接发http请求过去要数据不就行了吗?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或android-webservice-mysql实现连接 删除数据 怎么用
谁能给我个简单点的例子 thank you
[问题点数:40分]
android-webservice-mysql实现连接 删除数据 怎么用
谁能给我个简单点的例子 thank you
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年3月 总版技术专家分月排行榜第三
2014年5月 移动开发大版内专家分月排行榜第一2014年4月 移动开发大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 vb连接网络数据库 的文章

 

随机推荐