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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,905评论 18 399
  • 先看一下效果图: (一)头像裁切、上传服务器(效果图) 一般都是有圆形显示头像的,这里我自定义了一个ImageVi...
    kingZXY2009阅读 10,818评论 5 15
  • 一. Java基础部分.................................................
    wy_sure阅读 9,239评论 0 11
  • 电视盒子中比较常见的一个难点总结如下: 1:判断是自启动还是与服务端测试 2:没有网络情况下,怎么在启动后通过ad...
    茴香豆的第五种写法阅读 5,419评论 1 2
  • 百日练一百天读一百本书第三十九天,今天读的书名叫《写作业不用靠妈妈》,讲的是:宙思一遇到要动脑筋的作业就...
    梦境里的冰雪阅读 1,391评论 0 1