zoukankan      html  css  js  c++  java
  • 和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();

  • 相关阅读:
    安装oracle 10g常见问题解决方案
    Jdbc连Oracle
    XML及其技术指南
    JSP页面的五种跳转方法
    JDBC连接MySQL
    什么定向采集,什么泛采集?
    我的论坛密码忘记了,怎么办?
    可以自动设置dedecms的栏目吗?
    动易® SiteWeaver™ 内容管理系统6.8 发布模块如何使用?
    怎样做好站群 为什么做站群?
  • 原文地址:https://www.cnblogs.com/qxl-blog/p/3154681.html
Copyright © 2011-2022 走看看