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信息。主要代码如下:


publicvoidpostRequest() {

try{

jsonHandle=newJsonHandle();

jsonObject.put("username",username);

jsonObject.put("password",password);

data=jsonObject.toString().getBytes();//这是要发送给服务端的json信息,里面有用户名以及密码。

URL url=newURL(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 =newBufferedReader(newInputStreamReader(is));

StringBuilder sb =newStringBuilder();

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")

publicclassLoginController {

@RequestMapping(value ="/login",method=RequestMethod.POST)

publicvoidlogin(HttpServletRequest req,HttpServletResponse rep)throwsIOException{

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.这样子,就达到了通信的目的,再加上一些逻辑代码,就能做到登录检测等功能啦

你可能感兴趣的:(android与本地tomcat的通信,实现登录功能)