Android客户端与服务器交互方式(1)
来源:互联网 发布:构造函数 java 编辑:程序博客网 时间:2024/05/19 15:24
Android客户端与服务器交互方式(1)
Android客户端与服务器端的数据交互有多种,最常见的就是webservice和json。
为了与服务器端交互主要通过通信协议,常用的就是Http和TCP。Http基于TCP,TCP协议对应传输层,Http协议对应应用层。当客户端需要从服务器获取数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开。
而xmlrpc,ssh的json就是这两种协议扩展来的。
使用webservices传输XML文件比较简单及通用,如果对数据大小及传输速度有要求的话就用json更合适。
此次讲的就是通过json进行数据交互。
所谓的通过json进行数据交互其实就是在客户端将数据转换为json字符串发送给服务器,服务器接送到后将json转换会原数据进行处理。那么客户端怎么发送json呢,即通过Http协议的Post或Get方法。
废话不多说上代码
1. android端
2.
package com.example.helloworld;public class MainActivity extends ActionBarActivity { private String responseMsg = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub //Intent intent = new Intent(MainActivity.this, InfoActivity.class); //startActivity(intent); Thread loginThread = new Thread(new LoginThread()); loginThread.start(); } }); } public HttpClient getHttpClient(){ BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5*1000); HttpConnectionParams.setSoTimeout(httpParams, 10*1000); HttpClient client = new DefaultHttpClient(httpParams); return client; } private void sendJson(){ //boolean loginValidate = false; String urlStr = "http://192.168.1.24:8080/servletTest/test"; HttpPost post = new HttpPost(urlStr); try{ //向服务器写json JSONObject json1 = new JSONObject(); //Object email = null; Object email = "hlelo"; json1.put("email", email); //Object pwd = null; Object pwd = "wodls"; json1.put("password", pwd); System.out.println("=============="+json.toString()); //保证json数据不是乱码 StringEntity se = new StringEntity(json.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); post.setEntity(se); //发送json给服务器 HttpClient httpClient = getHttpClient(); HttpResponse httpResponse = httpClient.execute(post); /*int httpCode = httpResponse.getStatusLine().getStatusCode(); if(httpCode == HttpURLConnection.HTTP_OK && httpResponse != null){ //org.apache.http.Header[] headers = httpResponse.getAllHeaders(); HttpEntity entity = httpResponse.getEntity(); //org.apache.http.Header header = httpResponse.getFirstHeader("content-type"); //读取服务器返回的json InputStream inputStream = entity.getContent(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader reader = new BufferedReader(inputStreamReader); String s; while((s= reader.readLine())!= null){ result.append(s); } reader.close(); JSONObject jsonObject = new JSONObject(result.toString()); String nameString = jsonObject.getString("email"); String passString = jsonObject.getString("password"); System.out.println("===============email is: "+nameString+", password is: "+passString);*/ }catch(Exception exception){ exception.printStackTrace(); } } class LoginThread implements Runnable{ public void run(){ sendJson(); } } }
2.servlet端
package cn.dragon.servlet;public class ServletDemoFirst extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //处理json内容 response.setCharacterEncoding("UTF-8"); response.setContentType("text/json"); String acceptjson = ""; try { BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream(), "utf-8")); StringBuffer sb = new StringBuffer(""); String temp; while((temp = br.readLine()) != null){ sb.append(temp); } br.close(); //以上的过程都从request中读取json,并将json转换成string,这样可以显示出来。最终String类型的json就是acceptjson acceptjson = sb.toString(); System.out.println("=======json is==========="+acceptjson); if(acceptjson != ""){ //System.out.println("get the json successfully"); JSONObject jo = JSONObject.fromObject(acceptjson); //email即是android端发送过来的json当中的一个key,我们使用get方法读取对应的value System.out.println(jo.get("email")); } else{ System.out.println("get the json failed"); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }}
参考出处:1.http://blog.csdn.net/panfb227
2.http://www.cnblogs.com/zhawj159753/p/3949956.html
作者:陈帅:原文地址
阅读全文
0 0
- Android客户端与服务器交互方式(1)
- Android客户端与服务器交互方式(1)
- Android 客户端与服务器交互方式
- Android 客户端与服务器交互方式
- Android 客户端与服务器交互方式
- Android 客户端与服务器交互方式
- Android客户端与服务器交互方式(2)
- Android客户端与服务器交互方式(2)
- 《转》Android客户端与服务器交互方式(webservices)-小结
- android客户端 与服务器交互
- Android 客户端与服务器交互
- Android开发一客户端与服务器交互(登陆功能)
- Android开发一客户端与服务器交互(登陆功能)
- Android服务器与客户端数据交互(Http协议)
- Android客户端与服务器数据交互
- Android客户端与服务器交互中的token
- Android客户端与服务器交互,登录案例
- Android客户端与服务器交互中的token
- “玲珑杯”线上赛 Round #15 河南专场 F咸鱼文章
- R语言 向量
- 软件工程中的那些图:系统流程图,程序流程图和数据流图
- MacOS命令收集
- outline of discrete mathematics and its applications(1.4-1.7)
- Android客户端与服务器交互方式(1)
- jQuery中this与$(this)的区别总结
- 【资源分享】史上最好的PS视频,没有之一
- Windows平台安装与使用RabbitMQ
- Android客户端与服务器交互方式(2)
- Linux如何查看进程、杀死进程、启动进程等常用命令
- 东北大学校园网登录登出shell脚本
- 递归5.递归函数--进制转换(十进制转二进制)
- php_jq_ajax