Android基础_网络请求/AsyTaskDemo(六)
来源:互联网 发布:超级电子仿真软件 编辑:程序博客网 时间:2024/06/05 15:03
原生网络请求
/* 1.创建一个子线程 * 2.定位资源url * new URL * 3.连接服务器 * url.open() * conn.setRequestMethod("GET"); * 4.获取响应码检测是否连接成功 * 5.成功后进行响应操作,获取字节输入流 并转换成字符流 * getInputStream(); * 304-重复获取资源 * 206-多线程下载,成功了一部分 * 6.获取textview * 7.在主线程中设置text * */ private void doGet() { new Thread() { public void run() { try { String urlPath = "http://192.168.35.180/login/login?username=lean&pwd=123456"; URL url = new URL(urlPath); HttpURLConnection conn =(HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); int rsp =conn.getResponseCode(); if(rsp==200){ InputStream is = conn.getInputStream(); final BufferedReader reader = new BufferedReader(new InputStreamReader(is)); runOnUiThread(new Runnable() { @Override public void run() { try { mTv.setText(reader.readLine()); } catch (Exception e) { } } }); } } catch (Exception e) { Log.v("meeeeeee", "报错"); } } }.start(); } /* 1.创建一个线程 * 2.创建url 打开连接 * 3.设置请求参数 * 1.修改请求方式 * setrequestMethod("post"); * 2.设置请求头 * setRequestProperty(); * 3.设置请求数据 * 4.获取响应码进行判断 * 5.获取资源 * 6.断开连接 * */ private void doPost(final String name ,final String pwd){ new Thread() { public void run() { try { URL url = new URL("http://192.168.35.180/loginPost/login"); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); //区别:post请求会将参数传入请求头中,而不是暴露在网址中 String params = "username="+name+"&pwd="+pwd; conn.setRequestProperty("Content-Length", params.length()+""); //将请求参数通过输出流写到服务器 OutputStream os = conn.getOutputStream(); os.write(params.getBytes()); if(conn.getResponseCode()==200){ InputStream is = conn.getInputStream(); loadLoginResource(is); }// conn.disconnect(); } catch (Exception e) { } } }.start(); }
HttpClient框架
/* 1.创建子线程 * 2.创建HttpClient * 3.创建getpost对象并传入url * 4.new一个 urlencodeformentity用来设置请求头 * 1.ArrayList<BasicNameValuePair> param * 2.param.add(new BasicNmaeVauePair(key,value);) * 3.new UrlEncodeFormEntity(param); * */ private void doPost(final String name, final String pwd) { new Thread() { public void run() { try { DefaultHttpClient client = new DefaultHttpClient(); String url = "http://192.168.35.180/loginPost/login"; HttpPost request = new HttpPost(url); Log.v("meeeeeee", "开启子线程"); ArrayList<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>(); parameters.add(new BasicNameValuePair("username", name)); parameters.add(new BasicNameValuePair("pwd", pwd)); HttpEntity entity=new UrlEncodedFormEntity(parameters); request.setEntity(entity); Log.v("meeeeeee", "获取实例"); HttpResponse response = client.execute(request); StatusLine statusLine = response.getStatusLine(); Log.v("meeeeeee", "获取实例"+statusLine.getStatusCode()); if(statusLine.getStatusCode()==200){ HttpEntity entity2 = response.getEntity(); InputStream is = entity2.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is));// Toast.makeText(MainActivity.this, ""+reader.readLine(), 0).show(); Log.v("meeeeeee", reader.readLine()); } } catch (Exception e) { } } }.start(); } /* 1.创建子线程 * 2.构建浏览器 * 3.创建get请求 * new httpget(urlpath); * 4.读取响应 * 1.执行get请求 返回一个resp对象 * clien.execute(request); * 2.获取响应行, * resp.getStatusLine(); * 3.响应行获取响应码 * statusLine.getStatusCode(); * 5.获取返回的数据 * 1. * */ void doGet(final String name ,final String pwd){ new Thread(){ public void run(){ Log.v("meeeeeee", "子线程开始"); try { String urlPath = "http://192.168.35.180/login/login?username=" + name + "&pwd=" + pwd; HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(urlPath); HttpResponse response = client.execute(request); Log.v("meeeeeee", "获取响应"); StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode()==200){ Log.v("meeeeeee", "获取响应码"); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is));// Toast.makeText(MainActivity.this, ""+reader.readLine(), 0).show(); Log.v("meeeeeee", reader.readLine()); } } catch (Exception e) { } } }.start(); }
Volley
/* 1.创建一个StringRequest对象 * 1.url * 2.Listener * 3.errorListener * 404 500等时候会被调用 * 2.创建一个请求队列 * 3.执行一个网络请求 * */ public void volleyGet(View v){ String url = "http://f.xmg520.cn:82/LoginDemo/servlet/LoginToAction?passWord=123&userName=xiaomage&format=xml"; Listener<String> listener =new Listener<String>(){ @Override public void onResponse(String response) { Log.v("meeeeeee", ""+response); } }; ErrorListener errorListener = new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }; StringRequest req = new StringRequest(url, listener, errorListener); RequestQueue qq = Volley.newRequestQueue(this); qq.add(req); } /* * 1.创建一个StringRequest对象,并实现HashMap<String,String> getParame() * 1.Method.post * 2.创建一个url * 3.Listener<T> ` * 4.ErrorListener<T> 2.创建一个RequestQueue对象 * 3.Rqq.add(req); */ public void volleyPost(View v) { String url = "http://192.168.137.1/loginPost/login"; Listener<String> lis = new Listener<String>() { @Override public void onResponse(String response) { Log.v("meeeeeee", response); } }; StringRequest req = new StringRequest(Method.POST, url, lis, null) { @Override protected Map<String, String> getParams() throws AuthFailureError { HashMap<String, String> params = new HashMap<String, String>(); params.put("username", "lean"); params.put("pwd", "123456"); return params; } }; RequestQueue reqq = Volley.newRequestQueue(this); reqq.add(req); }
AsyTaskDemo
/* 需求:执行网络请求并修改UI * 1.创建一个AsyncTask对象 ,并实现其在子线程中运行的方法 * AsyncTask<Void, Void, Void> * 1.第一个参数是传进子线程中的形参,在子线程中是作为数组 * 2.在线程执行过程中返回进度的形参,是publishProgress()的参数类型 * 3.第三个参数是子线程返回的数据类型 * 线程暂停 * SystemClock.sleep(1000); * 2.启动一个异步任务,在子线程运行 * asyncTask.execute("s"); * 3.实现onpostexecuta()在主线程中修改ui * asyncTask.onPostExecute(String result){ * } * 4.补充: * 1.实现onpreexecute()用于初始化网络环境,该方法会在网络请求前调用 * 该方法在主线程中运行 * 2.onprogressupdate(T... values) * */ public void start(View v){ AsyncTask<String, Integer, String> asyncTask = new AsyncTask<String, Integer, String>(){ @Override protected String doInBackground(String... params) {// 4.2 for(int i=0;i<100;i++){ SystemClock.sleep(50); publishProgress(i); } return params[0]; } @Override protected void onPostExecute(String result) { Toast.makeText(MainActivity.this,result , 0).show(); } @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } }; asyncTask.execute("你没的"); }
阅读全文
0 0
- Android基础_网络请求/AsyTaskDemo(六)
- Android----基础----第五、六天----网络编程
- Android基础笔记(六)-网络编程
- 六.Java基础_多线程
- 网络请求基础
- android基础学习之http协议网络请求基本实例
- Android 经典笔记之八:网络请求数据基础介绍
- Android 经典笔记之八:网络请求数据基础介绍
- Android 经典笔记之八:网络请求数据基础介绍
- Android进阶#(4/12)HTTP网络请求_网络框架的设计与实现
- 【网络基础 六】应用层
- 【网络基础 六】应用层
- Volley源码解析<六> HttpStack网络请求
- Linux常用命令详解(六)_网络
- Android核心基础(六)
- 【Android基础】六、Fragment
- Android核心基础-7.Android 网络通信-3.SmartImageView请求网络图片
- android请求网络
- 安卓5.1源码解析 : ListView解析 从绘制,刷新机制到Item的回收机制全面讲解
- js验证是否是数字
- python爬虫(二)爬取知乎问答
- 安卓5.1源码解析 : RecyclerView解析 从绘制流程,ViewHolder复用机制,LayoutManger,ItemAnimator等流程全面讲解
- 用css画三角形
- Android基础_网络请求/AsyTaskDemo(六)
- 重入锁 (替换synchronized)
- mybatis +junit4 +maven
- js千位符
- ssm文件上传
- 杭电acm2012 素数判定
- 二叉树的定义及实现
- 根据checkBox的状态,控制按钮可否点击。不可点击置灰
- 学不可以已_001