Android Http协议访问网络实例(3种)

之前关于Android Http协议访问网络的一点分析,最近需要回顾,就顺便发到随笔上了

Android中http连接主要是为了获取网络数据,目前了解的有3种方法:

  1. Httpconnection ——本人常用
  2. OKHTTP——看见过(需要在依赖中引入包)
  3. HttpClient——过气的方法(弃用)

HTTPCONNECTION

由于网络连接是耗时操作不能在UI线程操作,一般通过Handler获取子线程中获取的数据

Handler mhandler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      //数据处理逻辑
    }
  };

如何在UI线程中调用Http方法类(很久以前琢磨了很久):

new JsonText(mhandler);

返回的类型都是String,这里直接写在一个类里以后方便用

public class JsonTest {
  Handler handler;
  public JsonTest(Handler handler) {
    this.handler = handler;
    thread.start();
  }

  Thread thread=new Thread(new Runnable() {
    @Override
    public void run() {
      Message msg=new Message();
      try{
        InputStream in=null;
        HttpURLConnection connection=null;
        URL url=new URL("http://guolin.tech/api/china");
        connection=(HttpURLConnection)url.openConnection();
        connection.setRequestMethod("GET");//设置请求方式,可以不设置,默认是GET
        connection.setConnectTimeout(5000);//设置请求超时时间
        in=connection.getInputStream();
        msg.arg1=0x01;
        msg.obj=in.toString();
        handler.sendMessage(msg);
      }catch (Exception e){
        e.printStackTrace();
        msg.arg1=0x02;
        handler.sendMessage(msg);
      }finally {
        connection.disconnect();
      }
    }
  });
}

代码不复杂就不赘述了,接下来说其他几点:

thread:

经常听到有问sleep()和wait()有什么区别。sleep()方法来自thread类中,而wait()来自object类中;其次,sleep()方法调用的时候不出让系统资源,wait()让出系统资源其他线程可以占用CPU;最后,sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒。

http(超文本传输协议) ,https(超文本传输协议安全版)

关于TCP/IP 和UPD:

TCP/IP比UDP稳定,但是慢,因为它有三次握手机制

关于三次握手:

网上有很多解释,自己叙述就是主机先问服务器,我可以发数据了吗,服务器回答,可以了,主机在说,那我发了。具体的内容以后在详细理解,先上图

OKHTTP

书上的描述是:出色的网络通信库可以用来代替Httpconnection。你说出色我就用咯。

添加依赖:

dependencies {
compile 'com.squareup.okhttp3:okhttp:3.4.1'
}

使用

OkHttpClient client =new OkHttpClient();
//创建实例
Request request =new Request.Builder().build();

通过url()访问网络:

Request request =new Request.Builder().url("www.baidu.com").build();

之后调用newCall()方法创建call对象,并调用excute()方法发送请求并获取服务器数据:

Response response=client.newCall(request).excute();
String str=response..body().toString();//得到值

说一下上述两个方法都只说了get,没有post(提交数据),原因是懒了,以后再说

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android通过HTTP协议实现上传文件数据

    本文实例为大家分享了Android通过HTTP协议实现上传文件数据的具体代码,供大家参考,具体内容如下 SocketHttpRequester.java package cn.itcast.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.Inp

  • Android基于Http协议实现文件上传功能的方法

    本文实例讲述了Android基于Http协议实现文件上传功能的方法.分享给大家供大家参考,具体如下: 注意一般使用Http协议上传的文件都比较小,一般是小于2M 这里示例是上传一个小的MP3文件 1.主Activity:MainActivity.java public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private EditText timel

  • Android通过HTTP协议实现断点续传下载实例

    整理文档,搜刮出一个Android通过HTTP协议实现断点续传下载的代码,稍微整理精简一下做下分享. FileDownloader.java package cn.itcast.net.download; import java.io.File; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; import java.util.LinkedHashMap; impor

  • Android编程使用HTTP协议与TCP协议实现上传文件的方法

    本文实例讲述了Android编程使用HTTP协议与TCP协议实现上传文件的方法.分享给大家供大家参考,具体如下: Android上传文件有两种方式,第一种是基于Http协议的HttpURLConnection,第二种是基于TCP协议的Socket. 这两种方式的区别是使用HttpURLConnection上传时内部有缓存机制,如果上传较大文件会导致内存溢出.如果用TCP协议Socket方式上传就会解决这种弊端. HTTP协议HttpURLConnection 1. 通过URL封装路径打开一个Ht

  • 使用Android的OkHttp包实现基于HTTP协议的文件上传下载

    OkHttp的HTTP连接基础 虽然在使用 OkHttp 发送 HTTP 请求时只需要提供 URL 即可,OkHttp 在实现中需要综合考虑 3 种不同的要素来确定与 HTTP 服务器之间实际建立的 HTTP 连接.这样做的目的是为了达到最佳的性能. 首先第一个考虑的要素是 URL 本身.URL 给出了要访问的资源的路径.比如 URL http://www.baidu.com 所对应的是百度首页的 HTTP 文档.在 URL 中比较重要的部分是访问时使用的模式,即 HTTP 还是 HTTPS.这

  • Android使用http协议与服务器通信的实例

    网上介绍Android上http通信的文章很多,不过大部分只给出了实现代码的片段,一些注意事项和如何设计一个合理的类用来处理所有的http请求以及返回结果,一般都不会提及.因此,自己对此做了些总结,给出了我的一个解决方案. 首先,需要明确一下http通信流程,Android目前提供两种http通信方式,HttpURLConnection和HttpClient,HttpURLConnection多用于发送或接收流式数据,因此比较适合上传/下载文件,HttpClient相对来讲更大更全能,但是速度相

  • Android Http协议访问网络实例(3种)

    之前关于Android Http协议访问网络的一点分析,最近需要回顾,就顺便发到随笔上了 Android中http连接主要是为了获取网络数据,目前了解的有3种方法: Httpconnection --本人常用 OKHTTP--看见过(需要在依赖中引入包) HttpClient--过气的方法(弃用) HTTPCONNECTION 由于网络连接是耗时操作不能在UI线程操作,一般通过Handler获取子线程中获取的数据 Handler mhandler=new Handler(){ @Override

  • Android 用HttpURLConnection访问网络的方法

    一. HttpURLConnection以GET方式访问网络: HttpURLConnection connection = null; try { URL url = new URL("https://www.xxx.com/"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET");//设置访问方式为"GET" co

  • Android基于TCP和URL协议的网络编程示例【附demo源码下载】

    本文实例讲述了Android基于TCP和URL协议的网络编程.分享给大家供大家参考,具体如下: 手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UD

  • Android开发之HTTP访问网络

    本文实例为大家详细介绍了Android开发之HTTP访问网络的相关代码,供大家参考,具体内容如下 代码1: package com.ywhttpurlconnection; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Ywhttpur

  • 微信小程序封装http访问网络库实例代码

    微信小程序封装http访问网络库实例代码 之前都是使用LeanCloud为存储,现在用传统API调用时做如下封装 文档出处:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 代码如下: var HOST = 'http://localhost/lendoo/public/index.php/'; // 网站请求接口,统一为post function post(req) { //发起网络请求 wx.request(

  • Android 广播监听网络状态详解及实例代码

    Android 广播监听网络状态 我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断. 这时候,我们一般情况下,两种方式进行处理. 第一: 开启服务. 第二:发送广播的形式. 建议采用方法二. 源代码如下: 广播: /** * 有网络的广播 */ BroadcastReceiver connectionReceiver = new BroadcastReceiver() { @O

  • Android中实现地址栏输入网址能浏览该地址网页源码并操作访问网络

     首先实现简单布局: 复制代码 代码如下: <EditText android:id="@+id/et_url" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true&q

  • android studio按钮监听的5种方法实例详解

    1.匿名内部类 public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn1 = fin

  • android调用web service(cxf)实例应用详解

    Google为ndroid平台开发Web Service提供了支持,提供了Ksoap2-android相关架包 1.下载该夹包可以直接登录http://code.google.com/p/ksoap2-android/,现在该站点已经提供了直接的下载,只要点击下载链接就可以下载了: 我现在的是ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar 2.好了,现在我们就可以进行新建项目来进行测试了,首先我们先建立java服务端,这里的一些前期

  • 详解Android GLide图片加载常用几种方法

    目录 缓存浅析 GLide图片加载方法 图片加载周期 图片格式(Bitmap,Gif) 缓存 集成网络框架 权限 占位符 淡入效果 变换 启动页/广告页 banner 固定宽高 圆角 圆形 总结 缓存浅析 为啥要做缓存? android默认给每个应用只分配16M的内存,所以如果加载过多的图片,为了 防止内存溢出 ,应该将图片缓存起来. 图片的三级缓存分别是: 1.内存缓存 2.本地缓存 3.网络缓存 其中,内存缓存应优先加载,它速度最快:本地缓存次优先加载,它速度也快:网络缓存不应该优先加载,它

随机推荐