Androidはwebserviceでユーザーを検証します
http://danielzzu.blog.163.com/blog/static/118515304201011103562841/ここから
企業アプリケーションでは、携帯電話と企業データのインタラクションが少なくないに違いない.ここではandroidがどのように呼び出されるかを例によって説明する.net webservice
ステップ1:vs 2008 webserviceを構築し、コードを貼り付ける:
clsoptuser.cs
Service.cs
以上はサーバー側のコードで、上のプログラムをIISに配置して、配置は後でIEでテストすることができて、具体的な配置は私は言わないで、ネット上であちこちあります!
ステップ2:androidクライアント
Android呼び出しwebserviceはksoap 2-android-assembly-2.4-jar-with-dependenciesを使用します.jarは1つのパッケージで、ネット上でダウンロードすることができて、それからEclipceプロジェクトの中で処部jarを追加します
1、レイアウトファイル
main.xml
システムに入るたびにユーザー名とパスワードを入力するのが怖い(androidの仮想キーボードは確かにあまりない)と思うので、「ユーザー名とパスワードを覚える」と付け加えて、次回はユーザー名とパスワードを負けなくても便利です.
2、login.java
login.java
以上の検証プログラムはネットワークにアクセスする必要があります.AndroidManifestにあることを忘れないでください.xml加入
企業アプリケーションでは、携帯電話と企業データのインタラクションが少なくないに違いない.ここではandroidがどのように呼び出されるかを例によって説明する.net webservice
ステップ1:vs 2008 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でテストすることができて、具体的な配置は私は言わないで、ネット上であちこちあります!
ステップ2:androidクライアント
Android呼び出しwebserviceはksoap 2-android-assembly-2.4-jar-with-dependenciesを使用します.jarは1つのパッケージで、ネット上でダウンロードすることができて、それから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加入