`
yugouai
  • 浏览: 498537 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSON实现Android 网络数据交换(包括复杂对象的传送)

 
阅读更多
1,服务端到客户端
服务端新建Json数据,HttpservletResponse是请求对象的返回,得到他的writer,把json转换成string就可以。写在doGet里。
代码:
res.setContentType("UTF-8");
PrintWriter pw = res.getWriter();
JSONObject json = new JSONObject();
json.put("name","fwz");
pw.write(json.toString());

客户端,使用HttpClient的execute的方法。用httpGet去执行。返回HttpResponse。再从response读取。
代码:
BufferedReader  bufferedReader = null;
        StringBuilder sb = new StringBuilder();
        String s = "";
        try {
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(new HttpGet("http://10.0.2.2:8080/myFirstServlet/JSONServer"));
HttpParams httpParams = client.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 3000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpEntity entity = response.getEntity();
if (entity!=null) {
bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8"));  //8192
while((s=bufferedReader.readLine())!=null) {
sb.append(s);   
}
}
nameTextView.setText(sb.toString());  //这里输出得到的JSon数据(未解析)
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}


2,客户端到服务器端的传送

客户端,跟前面差不多,也是利用httpClient的execute方法,不过发送数据用Post。结合entity。
代码:
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://10.0.2.2:8080/myFirstServlet/JSONServer");
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("name", "ze");
StringEntity entity = new StringEntity(jsonObject.toString());
post.setEntity(entity);
HttpResponse responString = client.execute(post);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


服务端,只要写一个读取的方法就可以,在方法里处理HttpservletRequest的数据
代码:  这里只是输出
try {
BufferedInputStream in = new BufferedInputStream(req.getInputStream());
    int i;
    char c;
    while ((i=in.read())!=-1) {
    c=(char)i;
    System.out.print(c);
    }
    System.out.println();
    System.out.println("test");
}
catch (Exception ex) {
ex.printStackTrace();
}
分享到:
评论

相关推荐

    java传送json到jni,jni传送json到java

    综上所述,Java Activity通过JNI与本地代码进行JSON数据交换涉及到序列化/反序列化、JNI接口定义、本地代码实现、错误处理和性能优化等多个环节。理解和熟练掌握这些步骤对于开发高效的Android应用至关重要。

    android手机与asp服务器传输数据源码

    在压缩包中包含的"Json数据传送asp服务器"文件,很可能是Android端用于发送JSON数据的示例代码或者服务器端处理JSON数据的ASP脚本。这个文件对于理解整个数据交互过程至关重要,因为它展示了如何实际编码实现数据的...

    android 局域网應用

    2. **JSON/XML数据交换**:为了在设备间交换数据,常使用JSON或XML作为数据格式,因为它们结构清晰,易于解析。 3. **WebSocket**:对于实时性要求较高的应用,可以使用WebSocket协议,它提供全双工通信,使得...

    蓝牙温度数据传送.rar_VSP_蓝牙_蓝牙数据_蓝牙通信

    在压缩包内的“蓝牙温度数据传送”文件很可能包含了实现上述功能的源代码、配置文件或者日志,通过分析这些文件,我们可以深入理解蓝牙通信在实际应用中的实现细节。在实际操作中,开发者可能需要调试这些代码以确保...

    Android源码——注册界面源码.zip

    在与服务器交换数据时,JSON格式是最常见的。因此,了解如何使用Gson或Jackson库将Java对象转换为JSON字符串,以及将服务器响应解析为Java对象至关重要。 7. **错误处理**: 当网络请求失败或服务器返回错误状态...

    PHP gbk环境下json_dencode传送来的汉字

    3. **跨域数据交换**:JSONP(JSON with Padding)是解决JavaScript跨域问题的一种方式,通过动态创建`<script>`标签引入包含回调函数的JSON数据。 4. **PHP与JavaScript数据交换**:JSON是PHP与JavaScript之间传递...

    Android登陆注册界面(使用手机号码验证码进行登陆注册)

    Android Studio提供了丰富的工具和库来简化网络请求,如Retrofit、Volley或OkHttp,它们可以方便地处理JSON数据交换,并自动处理异步回调。 在实现过程中,还需考虑错误处理和用户体验。例如,当网络错误、验证码...

    GSM室温监控系统(完整资料).zip

    6. 远程服务器接口:如果使用云服务,需要了解HTTP/HTTPS协议,以及JSON或XML等数据交换格式。 7. 手机应用开发:如果涉及手机应用,需要学习Android或iOS平台的开发知识,创建用户友好的界面来展示数据。 四、系统...

    Portal-Soundboard:热门视频游戏门户的Android应用

    这需要对Android的网络编程有一定了解,如使用HttpURLConnection或OkHttp库进行网络请求,以及处理JSON或XML格式的数据交换。 总的来说,"Portal-Soundboard"作为一款基于Java开发的Android应用,它巧妙地结合了...

Global site tag (gtag.js) - Google Analytics