Java实现app接口和Socket消息传递(8)Android端测试接口

原创: 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();
		    }
		}
	}

}


2.Android端,我们直接来,但是传递username和password让我们后面用。
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

猜你喜欢

转载自blog.csdn.net/iwanghang/article/details/78520791