和android交互总结篇

模拟和android交互,可以在一个测试类中写:
 1.首先通过url获取web项目要访问的action路径。
  String httpUrl="http://localhost;8080/MicAtt/login/LoginAction/login.action";
 2.创建URL,通过HttpURLConnection 连接。
  Url url=new URL(httpUrl);
  HttpUrlConnection urlConn=(HttpUrlConnection)url.openConnection();//此处只是创建一个实例,并未真正连接
 3.设置URLConnection一些参数类型,并连接。
  urlConn.setDoInput(true);//设置允许输入
  urlConn.setDoOutput(true);//设置允许输出
  urlConn.setUseCaches(false)//设置不使用缓存
  urlConn.setRequestMethod("POST");//设置post方式发送
  urlConn.setRequestProperty("Connection","Keep-Alive");//设置一直连接
  urlConn.setRequestProperty("Content-length",String.valueOf(length));//设置文件长度
  urlConn.setRequestProperty("Content-type","text/xml;charset=UTF-8");//设置文件类型text/xml
  urlConn.connect();
 4.使用outputStream 输入流。//与正常思维正好相反,输入流使用OutputStream 向地址传流信息。
  OutputStream out = urlConn.getOutputStream(); //获取输出流,
  BufferedOutputStream bos = new BufferedOutputStream(out); //缓冲流
  OutputStreamWriter osw = new OutputStreamWriter(bos,"UTF-8"); //使用writer写入
  osw.write(xxx); //可以传文件流,json
  osw.flush();
  osw.close();
 5.使用InputStream 接受返回的json。
  InputStream input = urlConn.getInputStream();
  InputStreamReader inputReader = new InputStreamReader(input);
  BufferedReader reader = new BufferedReader(inputReader);
  StringBuffer sb = new StringBuffer();
  String inputLine= null;
  while((inputLine = reader.readLine())!=null){
   sb.append(inputLine).append(" ");
  }
  reader.close();
  inputReader.close();
  input.close();
  urlConn.disconnection();//不允许其他连接
  
  syso(sb.toString());
至此,模拟android已经完成,然后在action中,接受用户传进来的流。
 1.如果用户传参方式,是通过路径+?方式,那么用request就可以获取该参数。
 2.然后执行一系列数据库操作,封装json。
 3.在第一步之前,首先应该获取request和response,HttpServletRequest和HttpServletResponse,然后用response输出要返回给android的输出 

 流。对应android的第5步。
  response.setContentType("text/json;charset=UTF-8");
  response.setCharactorEncoding("UTF-8");
  response.write(json.toString().getBytes("utf-8"));
  response.flush();
  response.close();
在此将android上传图片代码贴上:
 android使用的是通过form上传图片和相关信息,和struts2上传相似,在action内,定义File类型的变量,接受图片。
 1.定义文件。
  File f=form.getImage(); //form里面有File类型的image变量
 2.还是使用输入流输出流的方式,将图片保存到相应的地址。
  String path = ServletActionContext().getServletContext().getRealPath("/upload");//项目根目录下upload文件夹
  String time = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());//文件名是当前时间,精确到秒
  FileInputStream fis = new FileInputStream(f);//输入流
  FileOutputStream fos = new FileOutputStream(path + File.seprator + time + ".jpg");//输出流,保存的位置
  BufferedOutputStream bos = new BufferedOutputStream(fos,1024); //缓冲流
  byte[] b = new byte[1024];
  int len = 0;
  while((len = fis.read(b))!=-1){
   bos.write(b);  //输出文件
  }  
  bos.flush();
  bos.close();

原文地址:https://www.cnblogs.com/qxl-blog/p/3154681.html