android与本地tomcat的通信,实现登录功能

最近需要实现android与部署在本地tomcat上的java web项目之间进行通信的功能,在这里总结一下。

首先,由于是与本地服务器通信,所以我是采用android模拟器实现的。常用的模拟器有夜神,海马玩等(官方模拟器用着比较卡) 但是夜神无法访问到本地tomcat,所以我

使用的海马玩,本地服务器的地址是10.0.2.2。

夜神连接androidstudio:cmd进入到Nox\bin下,nox_adb.exe  connect 127.0.0.1:62001

海马玩连接androidstudio:cmd进入Droid4X  下,adb connect 127.0.0.1:26944。 当然端口号随意。

java web服务端我使用的是springmvc+mybatis+spring。

思路:

android端的话,我使用的是HttpUrlConnection与服务端进行通信,传递的是json信息。主要代码如下:

public void postRequest() {
        try {
            jsonHandle=new JsonHandle();
	    jsonObject.put("username",username);
            jsonObject.put("password",password);
            data=jsonObject.toString().getBytes();//这是要发送给服务端的json信息,里面有用户名以及密码。
            URL url=new URL(ip);//ip是后端具体的处理登录的url,例如http://10.0.2.2:8080/xxx/mvc/login,记得加上http。
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setConnectTimeout(3000);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");
	    httpURLConnection.connect();
	    OutputStream outputStream = httpURLConnection.getOutputStream();
            outputStream.write(data);
            outputStream.flush(); //发送data
	   //读取服务端的返回信息。
            InputStream is=httpURLConnection.getInputStream(); 
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));

            StringBuilder sb = new StringBuilder();
            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "/n");
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                   is.close();
                } catch (Exception e)
                {e.printStackTrace();
                }
            }
          
        }catch (Exception e){
            e.printStackTrace();
        }

    }


服务端,使用springmvc处理请求。代码如下:

@Controller
@RequestMapping(value = "/mvc")
public class LoginController {
	@RequestMapping(value = "/login",method=RequestMethod.POST)
	public void login(HttpServletRequest req,HttpServletResponse rep) throws IOException{
		BufferedReader br = null;
		try {
			br = req.getReader();	//接收信息
		} catch (IOException e1) {
		// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String line = null;
		String data = "";
		while ((line = br.readLine()) != null) {
			data += line;
		}
		try {
		rep.getOutputStream().write("信息".getBytes()); //发送信息。
		} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		}
}



一般传递方式都是post.这样子,就达到了通信的目的,再加上一些逻辑代码,就能做到登录检测等功能啦

猜你喜欢

转载自blog.csdn.net/qq_34761108/article/details/78376811