1、HttpClientDoGet

//activity中在onCreate中加MyAsyncTask类,然后再点击事件中设置,调用public class MainActivity extends Activity implements View.OnClickListener {……public void onClick(View v) {switch (v.getId()) {case R.id.button_doget:MyAsyncTask task = new MyAsyncTask();task.execute();break;……class MyAsyncTask extends AsyncTask<String, Integer, String> {@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);}@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected String doInBackground(String... params) {HttpClient client = new DefaultHttpClient();String urlString = "http://192.168.0.30:8080/MyWebTest/MyTestServerlet?username=zhangsan";//直接跟在url后是doGet方法,如果想用doPost方法,改变这里的代码即可HttpGet get = new HttpGet(urlString);//设置服务器接收后的数据读取方式为utf-8get.setHeader("Content-Type", "application/x-www-form-urlencoded;Charset=UTF-8");try {HttpResponse response = client.execute(get);//执行get方法得到服务器的返回的所有数据都在response中StatusLine statusLine = response.getStatusLine();//httpClient访问服务器返回的表头int code = statusLine.getStatusCode();//得到状态码if (code == HttpURLConnection.HTTP_OK) {HttpEntity entity = response.getEntity();//得到数据的实体InputStream is = entity.getContent();//得到输入流BufferedReader br = new BufferedReader(new InputStreamReader(is));String line = br.readLine();while (line != null) {System.out.println(line);line = br.readLine();}}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "连接成功";}}
}

Volley

什么是Volley

在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
这是Volley名称的由来: a burst or emission of many things or a large amount at once
在Google IO的演讲上,其配图是一幅发射火弓箭的图,有点类似流星。

Volley的执行机制图:

1、连接网络

首先把requestquene设置成单例,就不用每次都新建quene

public class MySingleton {private static MySingleton mInstance;private RequestQueue mRequestQueue;private ImageLoader mImageLoader;private static Context mCtx;private MySingleton(Context context) {mCtx = context;mRequestQueue = getRequestQueue();mImageLoader = new ImageLoader(mRequestQueue,new ImageLoader.ImageCache() {private final LruCache<String, Bitmap>cache = new LruCache<String, Bitmap>(20);@Overridepublic Bitmap getBitmap(String url) {return cache.get(url);}@Overridepublic void putBitmap(String url, Bitmap bitmap) {cache.put(url, bitmap);}});}public static synchronized MySingleton getInstance(Context context) {if (mInstance == null) {mInstance = new MySingleton(context);}return mInstance;}public RequestQueue getRequestQueue() {if (mRequestQueue == null) {// getApplicationContext() is key, it keeps you from leaking the// Activity or BroadcastReceiver if someone passes one in.mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());}return mRequestQueue;}public <T> void addToRequestQueue(Request<T> req) {getRequestQueue().add(req);}public ImageLoader getImageLoader() {return mImageLoader;}}
  case R.id.button_volley:StringRequest request = new StringRequest(Request.Method.GET, "http://www.360.com", new Response.Listener<String>() {@Overridepublic void onResponse(String response) {mTextView.setText(response);}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {mTextView.setText("连接出错");}});MySingleton.getInstance(getApplicationContext()).addToRequestQueue(request);

2、连接到服务器

  case R.id.button_volley://     RequestQueue queue = Volley.newRequestQueue(getApplicationContext());StringRequest request = new StringRequest(Request.Method.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", new Response.Listener<String>() {@Overridepublic void onResponse(String response) {mTextView.setText(response);}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {mTextView.setText("连接出错");}}){@Overrideprotected Map<String, String> getParams() throws AuthFailureError {HashMap<String,String> map = new HashMap<>();map.put("username","zhangsan");//得到服务器的信息return  map;}};MySingleton.getInstance(getApplicationContext()).addToRequestQueue(request);break;

3、获得图片ImageLoader

case R.id.button_image:mNetworkImageView.setImageUrl("http://p0.so.qhimg.com/t01a8b52838fabe2125.jpg", MySingleton.getInstance(this).getImageLoader());//传入图片地址break;

xUtils

简介:
xUtils 包含了很多实用的android工具。xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。同时需要注意的是,xUitls最低兼容android 2.2 (api level 8) 。

下面主要介绍它重要的四大组件:
一、ViewUtils

    你受够了重复冗长的findViewById了嘛?你受够了各种监听事件的绑定了嘛?在这里,你只需要一句注解,如@ViewInject、@OnClick,就能轻松摆脱小白似的代码,大大的上了一个档次。

二、HttpUtils

   支持的HTTP七种请求方式,非常便捷的满足你的接口请求的需要。同时还支持大文件上传下载,以及同步异步请求。

三、BitmapUtils

   你的程序因OOM强制关闭过嘛?你在为加在网络图片头疼嘛?有了组件,你将永久摆脱前面的问题。

四、DbUtils

   简单易用又出色的ORM框架,真的是谁用谁知道,直接轻松存储各种对象到sqlite数据库中,同时也能非常方便的进行各种条件查询,甚至分页查询,还有对表中数据的更新删除等操作,真正的实现。一行代码就可以进行增删改查。并且可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等,支持事务。

案例:

//GET方法连接网络HttpUtils client = new HttpUtils();//初始化//下面传入参数,实现 RequestCallBack的两个方法client.send(HttpRequest.HttpMethod.GET, "http://www.360.com", new RequestCallBack<String>() {@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {mTextview.setText(responseInfo.result);}@Overridepublic void onFailure(HttpException e, String s) {mTextview.setText("网络连接出错");}});
//POST方法HttpUtils client = new HttpUtils();RequestParams params = new RequestParams();//用RequestParams来获取参数params.addBodyParameter("username", "张三");//下面传参时记得传入paramsclient.send(HttpRequest.HttpMethod.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet",params, new RequestCallBack<String>() {//ip为服务器的地址@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {mTextview.setText(responseInfo.result);}@Overridepublic void onFailure(HttpException e, String s) {mTextview.setText("网络连接出错");}});

案例展示:

网络连接之HttpClient,Volley,xUtils相关推荐

  1. android 7种网络连接方式--IT蓝豹

    2019独角兽企业重金招聘Python工程师标准>>> 本项目由作者 王永飞 精心为初学者准备的学习项目. android 几种网络连接方式,本项目适合初学者学习网络知识. 项目中用 ...

  2. Android4种网络连接方式的比较

    比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有 ...

  3. 跨平台微信网络开源Mars与网络框架Okhttp、Volley、Retrofit,Cookie持久化

    > 1. Mars 移动端IM网络层跨平台组件库Mars- https://github.com/Tencent/mars Android.iOS.OS X 平台的 demo(微信开源Mars的 ...

  4. android异步网络连接开源:Android Asynchronous Http Client

    在github发现还有一个Android Asynchronous Http Client,发现也不错.基于异步方式执行android内置的apache httpClient组建,http请求在UI线 ...

  5. Android官方开发文档Training系列课程中文版:网络操作之网络连接

    原文地址:http://android.xsoftlab.net/training/basics/network-ops/index.html 引言 这节课将会学习最基本的网络连接,监视网络连接状况及 ...

  6. Java网络连接之HttpURLConnection、HttpsURLConnection

    工具类包含两个方法: http请求.https请求 直接看代码: package com.jtools;import java.io.BufferedReader; import java.io.In ...

  7. IDEA翻译插件出现报错: 更新 TKK 失败,请检查网络连接解决

    背景 Google 翻译退出中国.Google发言人证实了这一点,该公司以"低使用率"为由,终止了中国大陆的Google翻译服务,该变化将影响Chrome浏览器以及KOReader ...

  8. 通过ConnectInterceptor源码掌握OKHttp3网络连接原理 呕心沥血第十弹【十】

    ConnectInterceptor 系列 前言 连接拦截器 Http协议发展 OKHttp创新 源码分析 ConnectionPool StreamAllocation RealConnection ...

  9. Android聊天软件的开发(三)--网络连接

    一,服务器网络接口    服务器网络接口通过Servlet实现,可以获得客户端提交的数据,对数据进行查询存储操作,以及返回结果数据给客户端.客户端可以通过HTTP协议直接访问网络接口.    HTTP ...

最新文章

  1. HashMap HashTable和ConcurrentHashMap的区别
  2. python有道翻译-Python调用有道词典翻译
  3. HDLC和 PPP的实验
  4. 新装的主机没有ifconfig,route等命令,怎么查找对应的安装包
  5. php 商品规格笛卡尔积,PHP 求多个数组的笛卡尔积,适用于求商品规格组合【原创】...
  6. 数组名不等于指针---sizeof()函数求数组大小错误问题
  7. Spring Boot Mybatis简单使用
  8. asp.net 窗体关闭事件_关于滁州一地煤气爆炸事件!最新消息来了!
  9. 关于阿里云OSS报错-java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException
  10. 我的成长笔记20210330(测试空闲期)
  11. asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
  12. 基于javaWEB技术的SSM音乐网站设计与实现(含论文+程序设计+PPT答辩)
  13. vue项目结合 Element插件
  14. 2.安装Clouda框架
  15. java的serialization_Java序列化(Serialization) 机制
  16. python发微信图片加文字_python向企业微信发送文字和图片消息的示例
  17. Java解析Excel 获取文本和图片信息
  18. openid无效什么意思_通过微信公众号认识一个漂亮的女朋友是什么体验?
  19. MySQL数据库基本管理
  20. 微信小程序小白知识点bindtap()和this.setData({})

热门文章

  1. Yii2CSRF验证失败 meta和自定义csrf已添加的情况下验证失败
  2. 达梦数据库(DM)——manage工具如何开启SQL编写智能提示功能
  3. CS162操作系统课程第二课-4个核心OS概念
  4. 阿里巴巴“38女王节”数据出炉:整体销售额较去年同比增长超100%
  5. 0207-年后第一天LPG豆粕涨停
  6. 补习系列(6)-SpringBoot 整合Shiro 一指禅
  7. led背光是未来LCD背光技术的发展方向
  8. [Extjs6]随记-使用h5的placeholder给编辑框添加提示效果
  9. access 数据分组
  10. 张明楷:案件事实认定方法的七点注意 z