数据传输部分

传出数据的类DataTransIn:其中 syncDataToServer()用来接收传入数据,具体代买解释如下

      /**

     * 把byte数据传到服务器的具体传送部分

     * @param b  数据字节数组

     */

    public boolean transDate(byte b[]){

        HttpPost request = new HttpPost(StaticFinalVariable.URL_Str);

        ByteArrayEntity byteArrayEntity = new ByteArrayEntity(b);

        boolean isOk=false;

        try {

            request.setEntity(byteArrayEntity);

            HttpResponse response = new DefaultHttpClient().execute(request);

            Log.e("error",response.getStatusLine()+"");

            if(response.getStatusLine().getStatusCode()==200){

                isOk=true;

                String msg = EntityUtils.toString(response.getEntity());

                Log.e("error",msg);                

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return isOk;

    }

    /**

     * 把数据传到服务器

     * @param treeMap 数据map

     * @param id 四位整数的id号

     * @param isZip  0表示不压缩,其他的表示压缩

     */

    public boolean syncDataToServer(TreeMap<String, Integer> treeMap,String id,boolean gzip) throws DigitException{

        

        InDataTobyteArr(treeMap); 

        addIdToArr(id);   //

        compressCon(gzip);

 

        

        return transDate();

    }

    /**

     * 自定义压缩下届

     * @param treeMap

     * @param minlength 压缩下届

     * @throws DigitException

     */

    public void syncDataToServer(TreeMap<String, Integer> treeMap,String id,long minlength) throws DigitException{

        

        if(sensorDataBytes.getSumByte()>minlength){

            syncDataToServer(treeMap, id,true);

        }

        else{

            syncDataToServer(treeMap,id,false);

        }

    }

    /**

     * 按照系统自定义的量去决定是否压缩

     * @param treeMap

     * @throws DigitException

     */

    public void syncDataToServer(TreeMap<String, Integer> treeMap,String id) throws DigitException{

        if(sensorDataBytes.getSumByte()>StaticFinalVariable.MIN_LENGTH){

            syncDataToServer(treeMap,id, true);

        }

        else{

            syncDataToServer(treeMap, id,false);

        }

    }

 

 

 

数据传输部分

服务器接收数据类DataTransOut:

数据传输部分

其中用runResult()解析ServletInputStream,printMap()打印传感器数据map ,getId(),getSensorData(String) 获取相应的数据

代码如下:

/**

     *   将整个request 的流全部解析出来。

     * @param request  传入的HttpServletRequest 参数

     * @throws IOException

     */

    public void runResult(HttpServletRequest request) throws IOException {

        readByteArray(request.getInputStream());

        readId(StaticFinalVariable.ID_BYTES);

        outDataFrombyteArr(StaticFinalVariable.ID_BYTES);

    }

    /**

     * 供测试用,打印传感器数据的map;

     */

    public void printMap(){

        System.out.println(treeMap);

    }

    /**

     * 获取name 传感器的数值

     * @param name  表示传感器名称

     * @return

     */

    public int getSensorData(String name){

        return treeMap.get(name);

    }

    /**

     * 获取传入的id

     * @return

     */

    public String getId(){

        return String.valueOf(id);

    }

    

使用的范例代码:

        button3.setOnClickListener(new View.OnClickListener() {

            

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                TreeMap<String, Integer> treeMap =new TreeMap<String, Integer> ();

                treeMap.put("hello", 1);

                treeMap.put("acceleration1",100);

                treeMap.put("temperature",2000);

                treeMap.put("acceleration2", 10000);

                treeMap.put("acceleration3",65535 );

                try {

                    Log.e("treeMap:",treeMap+"");

                    if(trans.syncDataToServer(treeMap,id,false)){

                        toastShow("发送成功");

                    }

                    else{

                        toastShow("发送失败");

                    }

                } catch (DigitException e) {

                    // TODO Auto-generated catch block

                    Toast.makeText(MainActivity.this,e.getMessage(), Toast.LENGTH_SHORT);

                    

                    e.printStackTrace();

                }

                Log.e("error", "testEntity after test");

            }

        });
View Code
    /**

     * 转换类

     */

    private DataTransOut trans=new DataTransOut();

    

    

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/html");

        response.setCharacterEncoding("utf-8");

        PrintWriter out = response.getWriter(); 

        

        trans.runResult(request);

        trans.printMap();

        System.out.println(trans.getId());

        trans.getSensorData("acceleration1");

        

        outputMap();

        String msg ="hello";

        out.print(msg);

        out.flush();

        out.close();

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doGet(request,response);

    }

你可能感兴趣的:(数据)