• android网络通讯数据封装之 json


    Demo程序包括客户端和服务端

    客户端按json数据格式封装数据传至服务端。

    服务端为简单的servlet程序,负责接收客户端传到json数据,然后按原数据返回客户端.

    实例代码如下:

    public static String cmdLogIn() {
       String urlString = "http://192.168.8.75:89/webroot/jsontest";
       HttpPost request = new HttpPost(urlString);
          try{
        //json数据格式{"data":{"spring":"yes","java":"ok"},
                       "head": {"password":"123456","name":"rarnu"}}
        //封装代码
             JSONObject headParam = new JSONObject();
             headParam.put("name", "yihu");
             headParam.put("password", "123456");
    
             JSONObject dataParam = new JSONObject();
             dataParam.put("java", "ok");
             dataParam.put("spring", "yes");
       
             JSONObject paramss = new JSONObject();
             paramss.put("head", headParam);
             paramss.put("data", dataParam);
      //json数据格式
    {"data":[{"spring":"yes","java":"ok"}],
     "head":[{"password":"123456","name":"yihu"},{"arry1":"java","classid":"321546"}]}
       
       JSONArray headParams = new JSONArray();
       //数组[0]
       JSONObject headParam1 = new JSONObject();
       headParam1.put("name", "yihu");
       headParam1.put("password", "123456");
       //数组[1]
       JSONObject headParam2 = new JSONObject();
       headParam2.put("arry1", "java");
       headParam2.put("classid", "321546");
       headParams.put(headParam1);
       headParams.put(headParam2);
       
       JSONArray dataParams = new JSONArray();
       JSONObject dataParam = new JSONObject();
       dataParam.put("java", "ok");
       dataParam.put("spring", "yes");
       dataParams.put(dataParam);
       
       JSONObject paramss = new JSONObject();
       paramss.put("head", headParams);
       paramss.put("data", dataParams);
               
            Log.v("tag", "params.toString() >>> :"+paramss.toString());
           // 绑定到请求 Entry
           StringEntity se = new StringEntity(paramss.toString());
           request.setEntity(se);
           // 发送请求
           HttpResponse httpResponse = new DefaultHttpClient().execute(request);
           int statusCode = httpResponse.getStatusLine().getStatusCode();
           Log.v("tag", "statusCode <- :"+statusCode);
          if (statusCode == 200) {
            InputStream entityStream;
            try {
               entityStream = httpResponse.getEntity().getContent();
               String jsonString = convertStreamToString(entityStream);
               Log.v("tag", "jsonString <- :"+jsonString);
               if ("".equals(jsonString))
                  return null;
               JSONObject json = new JSONObject(jsonString);
               JSONObject head = json.getJSONObject("head");
               Log.v("TAG", "name >> :"+head.optString("name"));
    
               return json.optString("java");
             }catch (Exception e) {
          }
        }
       }catch (Exception e) {
       }
      return null;
     }
     
     private static String convertStreamToString(InputStream is) {
       StringBuilder sb = new StringBuilder();
       try {
         BufferedReader reader = new BufferedReader(new InputStreamReader(
          is, "UTF-8"), 8 * 1024);
        String line = null;
        while ((line = reader.readLine()) != null) {
         sb.append(line + "n");
        }
       } catch (IOException e) {
        sb.delete(0, sb.length());
       } finally {
        try {
         is.close();
        } catch (IOException e) {
         
        }
       }
       return sb.toString();
        }

    服务端测试代码

    public class LoadServlet extends HttpServlet {
     public void destroy() {
      super.destroy();
     }
     
     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      StringBuffer messagebuffer = new StringBuffer();
      javax.servlet.ServletInputStream in = request.getInputStream();
      DataInputStream din = new DataInputStream(in);
      int ch;
      while ((ch = din.read()) != -1)
       messagebuffer.append((char) ch);
      din.close();
      
      String message = messagebuffer.toString();
      System.out.println("content...>>>:" + message);
      
      ByteArrayOutputStream bout = new ByteArrayOutputStream();
      DataOutputStream dout = new DataOutputStream(bout);
      byte str[] = message.getBytes("UTF-8");
      dout.write(str);
      byte data[] = bout.toByteArray();
      OutputStream out = response.getOutputStream();
      out.write(data);
      out.close();
     }
     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      doGet(request, response);
     }
     public void init() throws ServletException {
     }
    }
    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <description>jsontest</description>
        <display-name>jsontest</display-name>
       
        <servlet-name>jsonServlet</servlet-name>
        <servlet-class>com.yihu.json.servlet.LoadServlet</servlet-class>
       
      </servlet>
      <servlet-mapping>
        <servlet-name>jsonServlet</servlet-name>
        <url-pattern>/jsontest</url-pattern>
      </servlet-mapping>
    </web-app>
  • 相关阅读:
    CF140CNew Year Snowmen
    ZR10.1青岛集训三地联考
    CF1228——记一次和紫名失之交臂的CF
    CF1220
    codeforce 382 div2 E —— 树状dp
    codeforce 381 div2
    codeforce 380(div.2)
    Bishops Alliance—— 最大上升子序列
    codeforce 379(div.2)
    模板——BigInteger
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5285973.html
Copyright © 2020-2023  润新知