android通过webservice验证用户
16lz
2022-04-07
在企业应用中,手机与企业数据的交互必不可少,在这里我们通过实例来描述android怎样调用.net webservice
{ //验证方法
public bool Validate( string u, string p)
{
bool k = false ;
SqlConnection userConn = new SqlConnection( " 连接字符 " );
userConn.Open();
SqlCommand userComm = new SqlCommand( " select *from user " , userConn);
SqlDataReader userDr = userComm.ExecuteReader();
string tmpuser, tmppass;
while (userDr.Read())
{
int userindex = userDr.GetOrdinal( " user " );
int passindex = userDr.GetOrdinal( " password " );
tmpuser = userDr.GetString(userindex);
tmppass = userDr.GetString(passindex); //用户名和口令正确返回true
if ((tmpuser == u) && (tmppass == p))
{
k = true ;
break ;
}
}
return k;
}
} Service.cs [WebMethod]
public bool ValidateUsername( string username, string pass, string validate)
{
if (validate == " webservice验证码 " )
{
clsoptuser objoptuser = new clsoptuser();
return objoptuser.Validate(username, pass);
}
else
{
return false ;
}
}
< LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
android:orientation = " vertical "
android:layout_width = " fill_parent "
android:layout_height = " fill_parent " android:background = " @drawable/login2 " android:gravity = " bottom " >
< LinearLayout android:id = " @+id/LinearLayout02 "
android:layout_height = " wrap_content "
android:layout_width = " fill_parent " >
< TextView android:layout_width = " wrap_content "
android:layout_height = " wrap_content "
android:id = " @+id/labeluser "
android:text = " @string/labelname "
android:textStyle = " bold "
android:textSize = " 20sp " >
</ TextView >
< EditText android:layout_height = " wrap_content "
android:id = " @+id/EditTextUser "
android:width = " 150px "
android:layout_width = " fill_parent " >
</ EditText >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout03 "
android:layout_height = " wrap_content "
android:layout_width = " fill_parent " >
< TextView android:layout_width = " wrap_content "
android:layout_height = " wrap_content "
android:id = " @+id/labelpass "
android:text = " 登录密码: "
android:textStyle = " bold "
android:textSize = " 20sp " >
</ TextView >
< EditText android:layout_height = " wrap_content "
android:id = " @+id/EditTextPassWord "
android:password = " true "
android:layout_width = " fill_parent " >
</ EditText >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout04 " android:layout_height = " wrap_content " android:layout_width = " fill_parent " android:gravity = " center " > < CheckBox android:id = " @+id/CheckBox01 " android:layout_width = " wrap_content " android:layout_height = " wrap_content " android:text = " 记住用户名和密码 " android: checked = " true " > </ CheckBox >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout01 " android:layout_height = " wrap_content " android:layout_width = " fill_parent " android:layout_gravity = " bottom " android:gravity = " center " > < Button android:id = " @+id/BtnLogin " android:text = " 登 录 " android:layout_height = " wrap_content " android:layout_width = " wrap_content " android:layout_weight = " 1 " > </ Button > < Button android:layout_width = " wrap_content " android:layout_height = " wrap_content " android:id = " @+id/BtnExit " android:text = " 退 出 " android:layout_weight = " 1 " > </ Button >
</ LinearLayout >
</ LinearLayout >
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
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 com.liwei.prohotel.clswdy.HttpThread;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class login extends Activity {
Button btnlogin,btnexit;//登录和退出按钮对像
EditText edituser,editpass;//用户名和密码输入框对象
boolean data = false ;//调用webservice 近回的数据,验证成功true,失败false
HttpThread thread = null ;//线程对像
String name = "" ;//用户名
String pass = "" ;//口令
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
btnlogin = (Button)findViewById(R.id.BtnLogin);//获得用户名和密码按钮实例
btnexit = (Button)findViewById(R.id.BtnExit);
edituser = (EditText)findViewById(R.id.EditTextUser);//获得用户名和密码Edittext
editpass = (EditText)findViewById(R.id.EditTextPassWord); //获取上次保存的用户名和密码
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
String tempstr = sp.getString( " username " , "" );
edituser.setText(tempstr);
editpass.setText(sp.getString( " pass " , "" )); //退出按钮点击事件
btnexit.setOnClickListener( new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
//登录按钮点击事件
btnlogin.setOnClickListener( new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
name = edituser.getText().toString();
pass = editpass.getText().toString();
ResponseOnClickLogin(name, pass);
}
});
}
public void ResponseOnClickLogin(String username,String password){
thread = new HttpThread(handlerwdy);//建立线程实例
HashMap < String ,Object > params = new HashMap < String ,Object > ();
try{ String strvalidate = " galyglxxxt " ;
strvalidate = new String(strvalidate.toString().getBytes(), " UTF-8 " );
params.put( " username " , username); // 加入参数
params.put( " pass " , password);
params.put( " validate " , strvalidate);
} catch (Exception ex){
ex.printStackTrace();
}
String url = " 192.168.3.2:8080/loginweb/service.asmx " ;//webserivce地址
String nameSpace = " http://tempuri.org/ " ;//空间名,可修改
String methodName = " ValidateUsername " ;//需调用webservice名称
thread.doStart(url, nameSpace, methodName, params);//启动线程
} //生成消息对象
Handler handlerwdy = new Handler(){
public void handleMessage(Message m){
switch (m.what){
case 1 :
data = m.getData().getBoolean( " data " );//从消息在拿出数据
if (data){
CheckBox cb = (CheckBox)findViewById(R.id.CheckBox01);//如果要保存用户名和密码
if (cb.isChecked())
{
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
String tempname = name;
editor.putString( " username " , name);
editor.putString( " pass " , pass);
editor.commit();
}
else
{
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString( " username " , "" );
editor.putString( " pass " , "" );
editor.commit();
} //登录成功后的提示
Toast.makeText(prohotel. this , getString(R.string.login_message), Toast.LENGTH_SHORT)
.show(); //成功后界面要交给项目的主界面了
Intent in = new Intent(prohotel. this ,promain. class );
//把用户名传给下一个activity
Bundle bundle = new Bundle();
bundle.putString( " KEY_USERNAME " ,name);
in.putExtras(bundle);
login. this .startActivity(in);
}
else
{ //验证不通过,给出个提示
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString( " username " , "" );
editor.putString( " pass " , "" );
editor.commit();
new AlertDialog.Builder(prohotel. this )
.setTitle(getString(R.string.login_message_title))
.setMessage(getString(R.string.login_message_title))
.setIcon(R.drawable.cancel)
.setNeutralButton(getString(R.string.login_button_text), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
// do nothing ?C it will close on its own
}
})
.show();
}
break ;
case 2 : //收到了调用出错的消息
new AlertDialog.Builder(prohotel. this )
.setTitle( " 出错: " )
.setMessage(m.getData().getString( " error " ))
.setNeutralButton( " Close " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
// do nothing ?C it will close on its own
}
})
.show();
break ;
}
}
}; //线程类
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) {
// 把参数传进来
this .url = url;
this .nameSpace = nameSpace;
this .methodName = methodName;
this .params = params;
//告诉使用者,请求开始了
progressDialog = new ProgressDialog(prohotel. this );
progressDialog.setTitle( " 网络连接 " );
progressDialog.setMessage( " 正在请求,请稍等...... " );
progressDialog.setIndeterminate( true );
// progressDialog=ProgressDialog.show(clswdy.this, "网络连接","正在验证,请稍等......",true,true);
progressDialog.setButton( " 取消 " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
progressDialog.cancel();
}
});
progressDialog.setOnCancelListener( new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
}
});
progressDialog.show();
this .start();//线程开始了
}
/**
*/
@Override
public void run() {
// TODO Auto-generated method stub
super .run();
try {
// web service请求,result为返回结果
boolean result = CallWebService();
if (result){
// 取消进度对话框
progressDialog.dismiss();
// clswdy.this.setProgressBarIndeterminateVisibility(false);
// 构造消息,验证通过了
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 1 ;//这里是消息的类型
b.putBoolean( " data " , true );//这里是消息传送的数据
message.setData(b);
handle.sendMessage(message);
}
else
{
progressDialog.dismiss();
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 1 ;
b.putBoolean( " data " , false );
message.setData(b);
handle.sendMessage(message);
}
} catch (Exception ex){
progressDialog.dismiss();
// 构造消息,程序出错了
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 2 ;
b.putString( " error " , ex.getMessage());
message.setData(b);
handle.sendMessage(message);
} finally {
}
}
/**
*
*/
protected boolean CallWebService() throws Exception{
String SOAP_ACTION = nameSpace + methodName;
boolean response = false ;
SoapObject request = new SoapObject(nameSpace,methodName);
// boolean request=false;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true ;//.net 支持
// 参数
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());
}
}
envelope.bodyOut = request;
//
AndroidHttpTransport androidHttpTrandsport = new AndroidHttpTransport(url);
// HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
SoapObject result = null ;
try {
// web service请求
androidHttpTrandsport.call(SOAP_ACTION, envelope);
// 得到返回结果
Object temp = envelope.getResult();
response = Boolean.parseBoolean(temp.toString());
} catch (Exception ex){
throw ex;
}
return response;
}
}
}
第一步:vs2008建webservice ,贴出代码:
clsoptuser.cs
public class clsoptuser{ //验证方法
public bool Validate( string u, string p)
{
bool k = false ;
SqlConnection userConn = new SqlConnection( " 连接字符 " );
userConn.Open();
SqlCommand userComm = new SqlCommand( " select *from user " , userConn);
SqlDataReader userDr = userComm.ExecuteReader();
string tmpuser, tmppass;
while (userDr.Read())
{
int userindex = userDr.GetOrdinal( " user " );
int passindex = userDr.GetOrdinal( " password " );
tmpuser = userDr.GetString(userindex);
tmppass = userDr.GetString(passindex); //用户名和口令正确返回true
if ((tmpuser == u) && (tmppass == p))
{
k = true ;
break ;
}
}
return k;
}
} Service.cs [WebMethod]
public bool ValidateUsername( string username, string pass, string validate)
{
if (validate == " webservice验证码 " )
{
clsoptuser objoptuser = new clsoptuser();
return objoptuser.Validate(username, pass);
}
else
{
return false ;
}
}
以上是服务器端的代码,把上面程序布署到IIS,布署以后可以用IE测试,具体布署我就不说了,网上到处有!
第二步:android客户端
android调用webservice 要用到ksoap2-android-assembly-2.4-jar-with-dependencies.jar一个包,到网上可下载,然后在Eclipce项目中添加处部jar
1、布局文件
main.xml
<? xml version = " 1.0 " encoding = " utf-8 " ?>< LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
android:orientation = " vertical "
android:layout_width = " fill_parent "
android:layout_height = " fill_parent " android:background = " @drawable/login2 " android:gravity = " bottom " >
< LinearLayout android:id = " @+id/LinearLayout02 "
android:layout_height = " wrap_content "
android:layout_width = " fill_parent " >
< TextView android:layout_width = " wrap_content "
android:layout_height = " wrap_content "
android:id = " @+id/labeluser "
android:text = " @string/labelname "
android:textStyle = " bold "
android:textSize = " 20sp " >
</ TextView >
< EditText android:layout_height = " wrap_content "
android:id = " @+id/EditTextUser "
android:width = " 150px "
android:layout_width = " fill_parent " >
</ EditText >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout03 "
android:layout_height = " wrap_content "
android:layout_width = " fill_parent " >
< TextView android:layout_width = " wrap_content "
android:layout_height = " wrap_content "
android:id = " @+id/labelpass "
android:text = " 登录密码: "
android:textStyle = " bold "
android:textSize = " 20sp " >
</ TextView >
< EditText android:layout_height = " wrap_content "
android:id = " @+id/EditTextPassWord "
android:password = " true "
android:layout_width = " fill_parent " >
</ EditText >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout04 " android:layout_height = " wrap_content " android:layout_width = " fill_parent " android:gravity = " center " > < CheckBox android:id = " @+id/CheckBox01 " android:layout_width = " wrap_content " android:layout_height = " wrap_content " android:text = " 记住用户名和密码 " android: checked = " true " > </ CheckBox >
</ LinearLayout >
< LinearLayout android:id = " @+id/LinearLayout01 " android:layout_height = " wrap_content " android:layout_width = " fill_parent " android:layout_gravity = " bottom " android:gravity = " center " > < Button android:id = " @+id/BtnLogin " android:text = " 登 录 " android:layout_height = " wrap_content " android:layout_width = " wrap_content " android:layout_weight = " 1 " > </ Button > < Button android:layout_width = " wrap_content " android:layout_height = " wrap_content " android:id = " @+id/BtnExit " android:text = " 退 出 " android:layout_weight = " 1 " > </ Button >
</ LinearLayout >
</ LinearLayout >
想到每次进系统都要输入用户名和密码都恐怖(android的虚拟键盘确实不怎的),所以上面加了个"记住用户名和密码",方便下次不用输用户名和密码.
2、login.java
login.java package com.liwei.login;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
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 com.liwei.prohotel.clswdy.HttpThread;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class login extends Activity {
Button btnlogin,btnexit;//登录和退出按钮对像
EditText edituser,editpass;//用户名和密码输入框对象
boolean data = false ;//调用webservice 近回的数据,验证成功true,失败false
HttpThread thread = null ;//线程对像
String name = "" ;//用户名
String pass = "" ;//口令
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
btnlogin = (Button)findViewById(R.id.BtnLogin);//获得用户名和密码按钮实例
btnexit = (Button)findViewById(R.id.BtnExit);
edituser = (EditText)findViewById(R.id.EditTextUser);//获得用户名和密码Edittext
editpass = (EditText)findViewById(R.id.EditTextPassWord); //获取上次保存的用户名和密码
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
String tempstr = sp.getString( " username " , "" );
edituser.setText(tempstr);
editpass.setText(sp.getString( " pass " , "" )); //退出按钮点击事件
btnexit.setOnClickListener( new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
//登录按钮点击事件
btnlogin.setOnClickListener( new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
name = edituser.getText().toString();
pass = editpass.getText().toString();
ResponseOnClickLogin(name, pass);
}
});
}
public void ResponseOnClickLogin(String username,String password){
thread = new HttpThread(handlerwdy);//建立线程实例
HashMap < String ,Object > params = new HashMap < String ,Object > ();
try{ String strvalidate = " galyglxxxt " ;
strvalidate = new String(strvalidate.toString().getBytes(), " UTF-8 " );
params.put( " username " , username); // 加入参数
params.put( " pass " , password);
params.put( " validate " , strvalidate);
} catch (Exception ex){
ex.printStackTrace();
}
String url = " 192.168.3.2:8080/loginweb/service.asmx " ;//webserivce地址
String nameSpace = " http://tempuri.org/ " ;//空间名,可修改
String methodName = " ValidateUsername " ;//需调用webservice名称
thread.doStart(url, nameSpace, methodName, params);//启动线程
} //生成消息对象
Handler handlerwdy = new Handler(){
public void handleMessage(Message m){
switch (m.what){
case 1 :
data = m.getData().getBoolean( " data " );//从消息在拿出数据
if (data){
CheckBox cb = (CheckBox)findViewById(R.id.CheckBox01);//如果要保存用户名和密码
if (cb.isChecked())
{
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
String tempname = name;
editor.putString( " username " , name);
editor.putString( " pass " , pass);
editor.commit();
}
else
{
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString( " username " , "" );
editor.putString( " pass " , "" );
editor.commit();
} //登录成功后的提示
Toast.makeText(prohotel. this , getString(R.string.login_message), Toast.LENGTH_SHORT)
.show(); //成功后界面要交给项目的主界面了
Intent in = new Intent(prohotel. this ,promain. class );
//把用户名传给下一个activity
Bundle bundle = new Bundle();
bundle.putString( " KEY_USERNAME " ,name);
in.putExtras(bundle);
login. this .startActivity(in);
}
else
{ //验证不通过,给出个提示
SharedPreferences sp = getSharedPreferences( " login " ,Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString( " username " , "" );
editor.putString( " pass " , "" );
editor.commit();
new AlertDialog.Builder(prohotel. this )
.setTitle(getString(R.string.login_message_title))
.setMessage(getString(R.string.login_message_title))
.setIcon(R.drawable.cancel)
.setNeutralButton(getString(R.string.login_button_text), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
// do nothing ?C it will close on its own
}
})
.show();
}
break ;
case 2 : //收到了调用出错的消息
new AlertDialog.Builder(prohotel. this )
.setTitle( " 出错: " )
.setMessage(m.getData().getString( " error " ))
.setNeutralButton( " Close " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
// do nothing ?C it will close on its own
}
})
.show();
break ;
}
}
}; //线程类
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) {
// 把参数传进来
this .url = url;
this .nameSpace = nameSpace;
this .methodName = methodName;
this .params = params;
//告诉使用者,请求开始了
progressDialog = new ProgressDialog(prohotel. this );
progressDialog.setTitle( " 网络连接 " );
progressDialog.setMessage( " 正在请求,请稍等...... " );
progressDialog.setIndeterminate( true );
// progressDialog=ProgressDialog.show(clswdy.this, "网络连接","正在验证,请稍等......",true,true);
progressDialog.setButton( " 取消 " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
progressDialog.cancel();
}
});
progressDialog.setOnCancelListener( new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
}
});
progressDialog.show();
this .start();//线程开始了
}
/**
*/
@Override
public void run() {
// TODO Auto-generated method stub
super .run();
try {
// web service请求,result为返回结果
boolean result = CallWebService();
if (result){
// 取消进度对话框
progressDialog.dismiss();
// clswdy.this.setProgressBarIndeterminateVisibility(false);
// 构造消息,验证通过了
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 1 ;//这里是消息的类型
b.putBoolean( " data " , true );//这里是消息传送的数据
message.setData(b);
handle.sendMessage(message);
}
else
{
progressDialog.dismiss();
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 1 ;
b.putBoolean( " data " , false );
message.setData(b);
handle.sendMessage(message);
}
} catch (Exception ex){
progressDialog.dismiss();
// 构造消息,程序出错了
Message message = handle.obtainMessage();
Bundle b = new Bundle();
message.what = 2 ;
b.putString( " error " , ex.getMessage());
message.setData(b);
handle.sendMessage(message);
} finally {
}
}
/**
*
*/
protected boolean CallWebService() throws Exception{
String SOAP_ACTION = nameSpace + methodName;
boolean response = false ;
SoapObject request = new SoapObject(nameSpace,methodName);
// boolean request=false;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true ;//.net 支持
// 参数
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());
}
}
envelope.bodyOut = request;
//
AndroidHttpTransport androidHttpTrandsport = new AndroidHttpTransport(url);
// HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
SoapObject result = null ;
try {
// web service请求
androidHttpTrandsport.call(SOAP_ACTION, envelope);
// 得到返回结果
Object temp = envelope.getResult();
response = Boolean.parseBoolean(temp.toString());
} catch (Exception ex){
throw ex;
}
return response;
}
}
}
以上验证程序需要访问网络,别忘了在AndroidManifest.xml加入<uses-permission android:name="android.permission.INTERNET" />
更多相关文章
- android 通信机制 socket
- Android之Broadcast, BroadcastReceiver(广播)
- Android主线程里不允许网络操作
- android Can't create handler inside thread that has not call
- Android中工作线程与主线程同步方式
- Android(安卓)关闭线程(转)
- Android仿QQ消息列表ListView滑动删除效果
- Android使用AsyncTask下载图片,最好使用WeakReference
- Android(安卓)主线程子线程执行关系