首页 > 其他分享 >android网络通讯数据封装之 json

android网络通讯数据封装之 json

时间:2023-07-31 22:32:26浏览次数:32  
标签:paramss java JSONObject dataParam 网络通讯 json put new android


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"},
                 
  
        JSONObject headParam = new JSONObject();
          headParam.put("name", "yihu");
                   JSONObject dataParam = new JSONObject();
          dataParam.put("java", "ok");
          dataParam.put("spring", "yes");
    
          JSONObject paramss = new JSONObject();
          paramss.put("head", headParam);
          paramss.put("data", dataParam);  
{"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-mapping>
     <servlet-name>jsonServlet</servlet-name>
     <url-pattern>/jsontest</url-pattern>
   </servlet-mapping>
 </web-app>

标签:paramss,java,JSONObject,dataParam,网络通讯,json,put,new,android
From: https://blog.51cto.com/u_3124497/6914301

相关文章

  • android 检查手机是否安装该程序
    publicbooleancheckPrograme(StringpackName,StringactvityName){booleanflag=false;PackageManagermanager=getPackageManager();//只查找启动方式为LAUNCHER并且是ACTION_MAIN的APPIntentmainIntent=newIntent(Intent.ACTION_MA......
  • android 应用程序数据共享ContentR…
    1.实现一个ContentProvider.publicclassDataProvidersextendsContentProvider{privatestaticfinalStringDATABASE_NAME="UIDB";privatestaticfinalintDATABASE_VERSION=1;privatestaticfinalStringTABLE_NAME="UITable";......
  • Android 使用【AIDL】调用外部服务
    在Android中有一种服务说是服务其实倒不如说是一个接口,这个接口名为:AndroidInterfaceDefinitionLanguage,这个接口可提供跨进程访问服务,英文缩写为:AIDL。此种服务的好处在于,多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作,下......
  • android学习之 如何在当前的Activi…
    当打开多个Activity(之前的没关闭)时,如何在当前的Activity退出程序呢?我们都知道最简单的是finish(),但这只是关闭当前的Activity,并不是退出整个程序。有人说用System.exit(1),我自己也试过用Process.killProcess(Process.myPid())。但都不理想,有时work,有时不起作用只是关闭当前的Acti......
  • JSONP前端流程
    JSONP前端流程JSONP总体思路后端先给前端一个接口文档。如https://www.baidu.com/sugrec?prod=pc&wd=用户输入的文字&cb=后端要调用的前端定义的全局函数名。前端会封装一个jsonp函数:它的作用是传入特定参数,返回一个Promise实例。会用jsonp的方式来请求后端数据,把后端......
  • android 自定义权限问题
    读懂Android(1):使用Android内部的DownloadProvider下载文件,并获取cache权限  --未审核  收藏Android内部提供了一个DownloadProvider,是一个非常完整的下载工具,提供了很好的外部接口可以被其他应用程序调用,来完成下载工作。同时也提供和很好的下载、通知、存储等机......
  • Android开发精华教程
    [下载]GoogleAndroid开发精华教程Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。本文汇总整理了时下关于GoogleAndroid技术教程的下载......
  • android listView控件学习之一
    androidlistView控件学习之一1.基本应用:1>res/layout/main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"......
  • android程序调用另一个android应用…
    android程序调用另一个android应用程序请求:例子:    newComponentName("com.gwsoft.player.activity","com.gwsoft.player.activity.PlayerActivity");newIntent();newBundle();"resUrl",resurl);......
  • android画图-----shape的使用文档…
    在GradientDrawable1试图中终于把shape学会了,以前总是似懂非懂,现在终于把里面的东西搞清楚了,同时也挺佩服谷歌的用心,故意设置一些陷阱吧,不认真对待还真以为没有啥效果呢。setContentView(R.layout.shape_drawable_1)shape_drawable_1代码如下:<ScrollViewxmlns:android="htt......