我们主要说的是客户端在服务端上面的操作,主要是在客户端上面的创建。
android客户端端:
①新建一个android application:Hello。
②引入org.json.jar。
③在activity_main.xml布局文件中加入两个EditText,来输入用户名和密码,添加按钮来提交json数据。
④先封装一下访问网络的HTTP操作:
WebUtil.java:
-
import org.apache.http.HttpResponse;
-
import org.apache.http.client.HttpClient;
-
import org.apache.http.client.methods.HttpPost;
-
import org.apache.http.entity.StringEntity;
-
import org.apache.http.impl.client.DefaultHttpClient;
-
import org.apache.http.params.BasicHttpParams;
-
import org.apache.http.params.HttpParams;
-
import org.apache.http.util.EntityUtils;
-
import org.json.JSONArray;
-
-
import cn.domain.hello.config.Config;
-
-
public class WebUtil {
-
public static JSONArray getJSONArrayByWeb(String methodName,
-
JSONArray params) {
-
-
String returnValue = "";
-
JSONArray result = null;
-
HttpParams httpParams = new BasicHttpParams();
-
httpParams.setParameter("charset", "UTF-8");
-
HttpClient hc = new DefaultHttpClient(httpParams);
-
HttpPost hp = new HttpPost(Config.SERVER_IP + "/HelloServer/servlet/"
-
+ methodName);
-
try {
-
hp.setEntity(new StringEntity(params.toString(), "UTF-8"));
-
HttpResponse hr = hc.execute(hp);
-
if (hr.getStatusLine().getStatusCode() == 200) {
-
returnValue = EntityUtils.toString(hr.getEntity(), "UTF-8");
-
result = new JSONArray(returnValue);
-
}
-
} catch (Exception e) {
-
-
e.printStackTrace();
-
}
-
if (hc != null) {
-
hc.getConnectionManager().shutdown();
-
}
-
return result;
-
}
-
}
-
⑤在MainActivity中实现登录操作:
-
package cn.domain.hello.activity;
-
-
import org.json.JSONArray;
-
import org.json.JSONException;
-
import org.json.JSONObject;
-
-
import cn.domain.hello.R;
-
import cn.domain.hello.config.Config;
-
import cn.domain.hello.util.WebUtil;
-
import android.app.Activity;
-
import android.os.AsyncTask;
-
import android.os.Bundle;
-
import android.util.Log;
-
import android.view.View;
-
import android.view.ViewStub;
-
import android.view.View.OnClickListener;
-
import android.view.ViewGroup;
-
import android.widget.Button;
-
import android.widget.EditText;
-
import android.widget.TextView;
-
import android.widget.Toast;
-
-
public class MainActivity extends Activity {
-
-
private EditText etUsername;
-
private EditText etPassword;
-
private Button btnLogin;
-
private ViewGroup vsProgress;
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
this.etUsername = (EditText) this.findViewById(R.id.etUsername);
-
this.etPassword = (EditText) this.findViewById(R.id.etPassword);
-
this.btnLogin = (Button) this.findViewById(R.id.btnLogin);
-
this.btnLogin.setOnClickListener(new OnClickListener() {
-
-
@Override
-
public void onClick(View v) {
-
-
String username = MainActivity.this.etUsername.getText()
-
.toString().trim();
-
String password = MainActivity.this.etPassword.getText()
-
.toString().trim();
-
if ("".equals(username)) {
-
Toast.makeText(MainActivity.this, "请填写用户名",
-
Toast.LENGTH_SHORT).show();
-
return;
-
}
-
if ("".equals(password)) {
-
Toast.makeText(MainActivity.this, "请填写密码",
-
Toast.LENGTH_SHORT).show();
-
return;
-
}
-
-
executeLogin(username, password);
-
}
-
});
-
-
}
-
-
private void executeLogin(String username, String password) {
-
new LoginTask().execute(username, password);
-
}
-
-
private void onLoginComplete(Integer userId) {
-
if (userId == null || userId == 0) {
-
Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT)
-
.show();
-
if (vsProgress != null) {
-
vsProgress.setVisibility(View.INVISIBLE);
-
}
-
return;
-
}
-
if (vsProgress != null) {
-
vsProgress.setVisibility(View.INVISIBLE);
-
}
-
-
Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
-
HelloActivity.actionStart(MainActivity.this, userId, etUsername
-
.getText().toString());
-
}
-
-
private class LoginTask extends AsyncTask<String, Void, Integer> {
-
-
@Override
-
protected void onPreExecute() {
-
-
super.onPreExecute();
-
-
if (vsProgress == null) {
-
ViewStub vs = (ViewStub) findViewById(R.id.vsProgress);
-
vsProgress = (ViewGroup) vs.inflate();
-
} else {
-
vsProgress.setVisibility(View.VISIBLE);
-
}
-
}
-
-
@Override
-
protected Integer doInBackground(String... params) {
-
-
Integer result = null;
-
JSONArray reqValue;
-
try {
-
-
reqValue = new JSONArray().put(new JSONObject().put("username",
-
params[0]).put("password", params[1]));
-
JSONArray rec = WebUtil.getJSONArrayByWeb(Config.METHOD_LOGIN,
-
reqValue);
-
if (rec != null) {
-
result = rec.getJSONObject(0).getInt("userId");
-
}
-
} catch (JSONException e) {
-
-
e.printStackTrace();
-
}
-
return result;
-
}
-
-
@Override
-
protected void onPostExecute(Integer result) {
-
-
super.onPostExecute(result);
-
-
onLoginComplete(result);
-
}
-
-
}
-
} 具体的其它相关类请下载下面的源码查看。记住一定不要忘了在AndroidManifest.xml文件中添加访问网络的权限:
-
<uses-permission android:name="android.permission.INTERNET" />