原创:
http://blog.csdn.net/iwanghang
3.可以了~我们下一篇博文,连接MySQL数据库继续实现登录功能。
原创: http://blog.csdn.net/iwanghang
1.服务端,我们先让服务端返回一个假结果就可以。
关键代码:
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
String jsonStr = "{\"username\":\"王航\""
+ ",\"password\":\"987654\""
+ ",\"status\":\"1\"}";
PrintWriter out = null;
try {
out = response.getWriter();
out.write(jsonStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
完整接口地址:
http://192.168.1.129:8080/servletDemo/test01
返回的Json数据:
{"username":"王航","password":"987654","status":"1"}
完整接口文件:
package com.iwanghang.servletDemo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class Test01 implements Servlet{
public Test01() {
System.out.println("HelloServlet...");
}
@Override
public void destroy() {
System.out.println("destroy...");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig...");
return null;
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo...");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init...");
}
@Override
public void service(ServletRequest arg0, ServletResponse response) throws ServletException, IOException {
System.out.println("service...");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
String jsonStr = "{\"username\":\"王航\""
+ ",\"password\":\"987654\""
+ ",\"status\":\"1\"}";
PrintWriter out = null;
try {
out = response.getWriter();
out.write(jsonStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
}
}
package com.iwanghang.demo1113;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import static com.iwanghang.demo1113.Constant.LOGINCHECK;
public class MainActivity extends AppCompatActivity {
private String TAG = "MainActivity";
// 创建请求队列
RequestQueue requestQueue = null;
private EditText et_username;
private EditText et_password;
private Button bt_login;
private String username;
private String password;
private String status;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestQueue = Volley.newRequestQueue(this);
et_username = findViewById(R.id.et_username);
et_password = findViewById(R.id.et_password);
bt_login = findViewById(R.id.bt_login);
initLogin(); // 登录 按钮点击事件监听
}
/**
* 登录 按钮点击事件监听
*/
private void initLogin() {
bt_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取输入账号密码
username = et_username.getText().toString();
password = et_password.getText().toString();
Log.v(TAG, " username = " + username);
netLogin(); // 发送网络请求
}
});
}
/**
* 发送网络请求 尝试登陆
*/
private void netLogin() {
// 请求地址
//String url = "hhttp://192.168.1.129:8080/servletDemo/test01";
StringRequest request = new StringRequest(Request.Method.POST, LOGINCHECK, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.v(TAG,"response = " + response);// 返回结果
try {
if (response.equals("no")){
Toast.makeText(MainActivity.this, "登录失败,请检查ID是否正确", Toast.LENGTH_SHORT).show();
}else {
JSONObject object1 = new JSONObject(response);
username = object1.getString("username"); // username
password = object1.getString("password"); // password
status = object1.getString("status"); // status
Log.e("TAG", "username = " + username);
Log.e("TAG", "password = " + password);
Log.e("TAG", "status = " + status);
Toast.makeText(MainActivity.this, "username = " + username +
" password = " + password +
" status = " + status, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG,"error = " + error); // 错误结果
Toast.makeText(getApplication(),"网络出问题",Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
// 请求的内容
Map<String,String> params = new HashMap<>();
params.put("username",username);
return params;
}
};
// 添加到请求队列
requestQueue.add(request);
}
}
看一下AndroidStudio的Logcat:
11-13 15:22:26.427 1134-1134/com.iwanghang.demo1113 V/MainActivity: response = {"username":"王航","password":"987654","status":"1"}
11-13 15:22:26.427 1134-1134/com.iwanghang.demo1113 E/TAG: username = 王航
11-13 15:22:26.427 1134-1134/com.iwanghang.demo1113 E/TAG: password = 987654
11-13 15:22:26.427 1134-1134/com.iwanghang.demo1113 E/TAG: status = 1
3.可以了~我们下一篇博文,连接MySQL数据库继续实现登录功能。
原创: http://blog.csdn.net/iwanghang