`
liangjian103
  • 浏览: 177577 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 下使用 JSON 实现 HTTP 请求

阅读更多

最近在用Android调用Web服务,开始准备用WebService来调用,用jws的WebService方式写好后发现Android调用的时候很多问题不知道咋解决了,后来发现有一个更好的办法,就是采用HttpPost来与后台交互。

下面就说一下相关的JSON的操作:

 

不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作
在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便

以下就是一个标准的 JSON 请求的实现过程:

HttpPost request = new HttpPost(url);
// 先封装一个 JSON 对象
JSONObject param = new JSONObject();
param.put("name", "rarnu");
param.put("password", "123456");
// 绑定到请求 Entry
StringEntity se = new StringEntity(param.toString());
request.setEntity(se);
// 发送请求
HttpResponse httpResponse = new DefaultHttpClient().execute(request);
// 得到应答的字符串,这也是一个 JSON 格式保存的数据
String retSrc = EntityUtils.toString(httpResponse.getEntity());
// 生成 JSON 对象
JSONObject result = new JSONObject( retSrc);
String token = result.get("token");

分享到:
评论
3 楼 liushihua71632 2011-08-19  
谢谢2位,正在找这方面的东西
2 楼 liangjian103 2011-07-24  
cnflood 写道
谢谢分享,但是这样的数据传到后服务端后,服务端怎么解析呢


就正常解析JSON就可以了。
例如:

/**查询新闻列表 */
public void queryByNewsList()throws Exception{
List<Map<Object,Object>> newsList = newsService.QueryByTop_Android(10);//查询新闻列表前10条
//System.out.println("已经到服务器了!"+newsList);
net.sf.json.JSONArray jsonAry = new net.sf.json.JSONArray();
for(Map<Object,Object> m:newsList){
String news_date = new SimpleDateFormat("yyyy-MM-dd").format((Date)m.get("news_date")); 
net.sf.json.JSONObject json = new net.sf.json.JSONObject();
json.put("news_id", m.get("news_id")+"");
json.put("news_title", m.get("news_title")+"");
json.put("news_date", news_date+"");
json.put("sort_id", m.get("sort_id")+"");
json.put("sort_name", m.get("sort_name")+"");
jsonAry.add(json);
}

//System.out.println("服务端组装JSON数据:");
//System.out.println(jsonAry);

byte[] jsonBytes = jsonAry.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();   
}

/**查询新闻列表-查询指定条数区间 */
public void queryByNewsLimit()throws Exception{
//System.out.println("查询"+num01+"条开始,的后"+num02+"条新闻");
List<Map<Object,Object>> newsList = newsService.QueryByLimit(num01, num02);//查询新闻列表前10条
//System.out.println("已经到服务器了!"+newsList);
net.sf.json.JSONArray jsonAry = new net.sf.json.JSONArray();
for(Map<Object,Object> m:newsList){
String news_date = new SimpleDateFormat("yyyy-MM-dd").format((Date)m.get("news_date")); 
net.sf.json.JSONObject json = new net.sf.json.JSONObject();
json.put("news_id", m.get("news_id")+"");
json.put("news_title", m.get("news_title")+"");
json.put("news_date", news_date+"");
json.put("sort_id", m.get("sort_id")+"");
json.put("sort_name", m.get("sort_name")+"");
jsonAry.add(json);
}

//System.out.println("服务端组装JSON数据:");
//System.out.println(jsonAry);

byte[] jsonBytes = jsonAry.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();   
}

/** 查询新闻内容 */
public void queryByNewsInfo()throws Exception{
Map<Object,Object> newsinfo = newsService.QueryByNews_Id(news.getNews_id()).get(0);
//System.out.println("已经到服务器了!"+newsinfo);
net.sf.json.JSONArray jsonAry = new net.sf.json.JSONArray();
String news_date = new SimpleDateFormat("yyyy-MM-dd").format((Date)newsinfo.get("news_date")); 
net.sf.json.JSONObject json = new net.sf.json.JSONObject();
json.put("news_id", newsinfo.get("news_id")+"");
json.put("news_title", newsinfo.get("news_title")+"");
json.put("news_content", newsinfo.get("news_content")+"");
json.put("news_img", newsinfo.get("news_img")+"");
json.put("news_date", news_date+"");
json.put("sort_id", newsinfo.get("sort_id")+"");
json.put("sort_name", newsinfo.get("sort_name")+"");
jsonAry.add(json);

//System.out.println("服务端组装JSON数据:");
//System.out.println(jsonAry);

byte[] jsonBytes = jsonAry.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();   
}

/** 保存客户端提交过来的问题。 */
public void SaveQuestion()throws Exception{
question.setQ_state("1");//默认为未公开
question.setQ_date(new Date());
question.setQ_content(question.getQ_title());
questionService.Save(question);
}

/**查询问题分类列表 */
public void queryByQuestionSortList()throws Exception{
List<Map<Object,Object>> questionSortList ;
questionSortList = all?questionSortService.QueryByAll():questionSortService.QueryByAll_Android();
//System.out.println("已经到服务器了!"+questionSortList);
net.sf.json.JSONArray jsonAry = new net.sf.json.JSONArray();
for(Map<Object,Object> m:questionSortList){
net.sf.json.JSONObject json = new net.sf.json.JSONObject();
json.put("sort_id", m.get("sort_id")+"");
json.put("sort_name", m.get("sort_name")+"");
jsonAry.add(json);
}

//System.out.println("服务端组装JSON数据:");
//System.out.println(jsonAry);

byte[] jsonBytes = jsonAry.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();   
}

/**通过分类ID查询问题列表 */
public void queryQuestionBySortIdList()throws Exception{
List<Map<Object,Object>> questionSortList = questionService.QueryBySort_Id_Android(questionSort.getSort_id());
//System.out.println("已经到服务器了!"+questionSortList);
net.sf.json.JSONArray jsonAry = new net.sf.json.JSONArray();
for(Map<Object,Object> m:questionSortList){
String q_date = new SimpleDateFormat("yyyy-MM-dd").format((Date)m.get("q_date"));
String a_date = new SimpleDateFormat("yyyy-MM-dd").format((Date)m.get("a_date"));
net.sf.json.JSONObject json = new net.sf.json.JSONObject();
json.put("q_id", m.get("q_id")+"");
json.put("q_title", m.get("q_title")+"");
json.put("q_date", q_date+"");
json.put("a_date", a_date+"");
json.put("a_content", m.get("a_content")+"");
json.put("sort_name", m.get("sort_name")+"");
jsonAry.add(json);
}

//System.out.println("服务端组装JSON数据:");
//System.out.println(jsonAry);

byte[] jsonBytes = jsonAry.toString().getBytes("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentLength(jsonBytes.length);
response.getOutputStream().write(jsonBytes);
response.getOutputStream().flush();
response.getOutputStream().close();   
}
1 楼 cnflood 2011-07-22  
谢谢分享,但是这样的数据传到后服务端后,服务端怎么解析呢

相关推荐

    Android下使用JSON实现HTTP请求.docx

    本篇将详细讲解如何在Android环境下利用JSON实现HTTP请求。 首先,HTTP请求通常通过HTTP协议的POST方法来发送数据,这里使用的是`HttpPost`类。`HttpPost`允许我们将数据作为实体(Entity)发送到服务器。在Android...

    Android下使用JSON实现HTTP请求.pdf

    本篇主要讲解如何在Android环境下使用JSON(JavaScript Object Notation)来实现HTTP请求,从而与服务器进行数据交换。JSON作为一种轻量级的数据交换格式,因其简洁、快速和易于阅读的特点,被广泛应用于前后端通信...

    Android Http (Json) 服务器端和客户端通信

    在Android客户端,实现与服务器端的通信主要包括发送HTTP请求和解析返回的JSON数据。下面是一些常用的方法和技巧: 1. **使用HttpURLConnection或第三方库**:在Android中,可以使用`HttpURLConnection`类直接发送...

    Android的JSON请求案例

    本案例主要关注如何在Android应用中实现JSON请求,理解并解析JSON数据。下面将详细阐述相关知识点。 1. **JSON基础** JSON是一种独立于语言的数据交换格式,它基于JavaScript的一个子集。数据格式主要包括对象...

    okhttp android json 网络请求

    综合来说,使用OkHttp和Gson处理Android中的网络请求和JSON数据是一项基础且重要的技能。对于想要提升开发效率的Android开发者来说,掌握这两个库的使用方法是十分有帮助的。在开发过程中,应该尽量减少重复性的代码...

    自己实现的Android PHP JSON实现登陆注册功能

    总结来说,这个项目展示了如何使用Android的OkHttp3库配合PHP后端和JSON数据交换,实现用户登录和注册功能。它涵盖了客户端的网络请求、数据序列化,以及服务器端的数据处理和响应。这个过程中的每个环节都是现代...

    Android Studio发起POST网络请求

    本文将详细讲解如何在Android Studio中使用Java语言和JSON数据格式实现POST请求,特别适合初学者学习。 **一、依赖库** 首先,我们需要引入必要的库,如OkHttp或Volley,它们可以帮助我们方便地发送网络请求。这里...

    Android PHP JSON 实现登陆注册功能

    在Android应用开发中,与服务器进行...开发者需要理解Android的网络请求机制、JSON的序列化和反序列化,以及PHP处理HTTP请求和MySQL数据库操作的基本知识。通过这样的实践,可以提高开发者在实际项目中的技能和经验。

    android-json-rpc

    4. **与Android框架集成**:由于是专门为Android设计的库,android-json-rpc考虑到了Android应用的特性,如异步操作、线程管理等,确保了在Android环境下的良好性能和稳定性。 5. **序列化与反序列化**:库内置了对...

    Android HttpClient与Json解析

    总结来说,这个Demo涵盖了Android中获取网络数据的关键技术:使用HttpClient发起HTTP请求,通过JSON解析获取数据,以及使用AsyncTask实现异步加载以避免阻塞主线程。这些技能对于任何需要与服务器交互的Android应用...

    Android服务器解析json数据实现下拉刷新上拉加载ListView显示

    通过学习和实践这个项目,你可以掌握从网络获取数据、解析JSON、使用ListView展示数据以及实现下拉刷新和上拉加载等核心技能,这些都是Android开发中的必备知识。这个实例经过验证且绝对运行成功,非常适合初学者...

    Android获取HTTPJson

    总结,Android获取HTTP JSON数据涉及到网络请求库的选择与使用、JSON数据的解析和封装、以及异步处理。理解并熟练掌握这些知识点对于Android开发者来说至关重要,能够帮助构建功能丰富的App并与服务器进行高效的数据...

    Android 下使用JSON的小例子

    使用Android的HttpURLConnection或OkHttp库,将JSON字符串作为HTTP请求的POST数据发送到Servlet。例如,使用HttpURLConnection: ```java URL url = new URL("http://yourserver.com/endpoint"); ...

    android网络请求 json传输

    本教程将深入讲解如何在Android中进行网络请求并使用JSON进行数据传输。 首先,了解Android中的网络请求。Android提供了多种网络通信方式,如HttpURLConnection、HttpClient(已废弃)、Volley、Retrofit、OkHttp等...

    Android高级应用源码-利用JSON,通过Android客户端访问web服务器,实现一个登录功能.rar

    在Android开发中,实现一个利用JSON与Web服务器交互的登录功能是高级应用的重要部分。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它允许Android客户端与服务器进行高效、简洁的数据通信。本...

    android使用JSON进行网络数据交换(服务端、客户端)的实现

    本教程将深入讲解如何在Android平台上使用JSON进行网络数据交换,涉及服务端和客户端的实现。 一、JSON基础 1. JSON结构:JSON主要由对象(Object)和数组(Array)两种基本类型构成。对象以大括号{}包裹,由键值对...

    android使用json小例子

    使用Volley进行JSON请求: ```java RequestQueue queue = Volley.newRequestQueue(context); JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener() { @...

    android使用JSON进行网络数据交换(服务端、客户端)的实现.rar

    总结,这个压缩包的实现可能涵盖了Android客户端使用Retrofit发送网络请求、解析JSON数据,以及服务器端处理JSON请求并返回的过程。在实际项目中,还需要考虑安全性、性能优化和错误处理等多方面因素。

    android HTTP通信例子(json数据传递)

    本示例将重点讲解如何在Android应用中实现基于HTTP的JSON数据传递,以及如何处理文件的上传和下载。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    org.json Android

    1. 数据封装:在Android客户端,使用`JSONObject`或`JSONArray`将数据结构化,例如将用户信息、请求参数等转换为JSON格式。 2. 发送请求:通过HttpURLConnection或Retrofit等网络库,将JSON数据作为HTTP请求的Body...

Global site tag (gtag.js) - Google Analytics