博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中使用http协议访问网络
阅读量:4314 次
发布时间:2019-06-06

本文共 3990 字,大约阅读时间需要 13 分钟。

HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析。

在Android中发送http请求的方式有两种,第一种是通过HttpURLConnection的方式,第二种是通过HttpClient的方式。

通过HttpURLConnection的方式发送http请求

通常分为以下5个步骤:

1.获取HttpURLConnection实例对象。先new一个URL实例,然后调用该对象的openConnection()方法。

2.设置http请求使用的方法(get和post方法,get方法是从服务器获取数据,post是向服务器发送数据)。

3.自由设定参数,如连接超时、读取超时等。

4.调用getInputStream()方法获取服务返回的信息。

5.调用disconnect()方法将http连接关闭。

 现在是简单实现的代码:

1 
9 10
17 18
21 22
28 29 30
activity_main.xml

这是Java代码

1 package com.example.yqt.networktest;  2   3 import android.os.Handler;  4 import android.os.Message;  5 import android.support.v7.app.AppCompatActivity;  6 import android.os.Bundle;  7 import android.view.Menu;  8 import android.view.MenuItem;  9 import android.view.View; 10 import android.widget.Button; 11 import android.widget.TextView; 12  13 import java.io.BufferedReader; 14 import java.io.InputStream; 15 import java.io.InputStreamReader; 16 import java.net.HttpURLConnection; 17 import java.net.URL; 18  19 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 20  21     public static final int SHOW_RESPONSE = 0; 22  23     Button sentRequestBtn; 24     TextView responseText; 25  26     Handler handler = new Handler() { 27         @Override 28         public void handleMessage(Message msg) { 29  30             switch (msg.what){ 31                 case SHOW_RESPONSE: 32  33                     String response = (String) msg.obj; 34                     responseText.setText(response); 35             } 36             //super.handleMessage(msg); 37  38         } 39     }; 40  41     @Override 42     protected void onCreate(Bundle savedInstanceState) { 43         super.onCreate(savedInstanceState); 44         setContentView(R.layout.activity_main); 45  46         sentRequestBtn = (Button)findViewById(R.id.send_request); 47         responseText = (TextView)findViewById(R.id.response); 48  49         sentRequestBtn.setOnClickListener(this); 50          51  52     } 53  54  55     @Override 56     public void onClick(View v) { 57  58         if(v.getId() == R.id.send_request){ 59             sendRequestWithHttpURLConnection(); 60         } 61  62     } 63     private void sendRequestWithHttpURLConnection(){ 64         new Thread(new Runnable() { 65             @Override 66             public void run() { 67                 HttpURLConnection connection = null; 68                 try { 69                     URL url = new URL("http://www.baidu.com"); 70                     connection = (HttpURLConnection) url.openConnection(); 71                     connection.setRequestMethod("GET"); 72                     connection.setConnectTimeout(8000); 73                     connection.setReadTimeout(8000); 74                     InputStream in = connection.getInputStream(); 75                     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 76                     StringBuilder response = new StringBuilder(); 77  78                     String line; 79                     while ((line = reader.readLine()) !=null){ 80                         response.append(line); 81                     } 82  83                     Message message = new Message(); 84                     message.what = SHOW_RESPONSE; 85                     message.obj = response.toString(); 86                     handler.sendMessage(message); 87  88  89  90                 }catch (Exception e){ 91                     e.printStackTrace(); 92                 }finally { 93                     if(connection != null){ 94                         connection.disconnect(); 95                     } 96                 } 97             } 98         }).start(); 99     }100 101 102 103 }
mainactivity.java

 

通过HttpClient的方式发送http请求

HttpClient是Apache提供的http网络访问的接口。

1.创建一个DefaultHttpClient的实例

2.创建一个HttpGet对象,并传入目标网络地址,调用execute()方法。

3.获取返回码,判断连接是否成功。若成功,还可提取相应数据。

 

转载于:https://www.cnblogs.com/yuqt/p/5080991.html

你可能感兴趣的文章
一周学会Mootools 1.4中文教程:(6)动画
查看>>
优秀的第二外语学习网站:Lang-8
查看>>
oracle存储过程杂记
查看>>
JPA @Id 和 @GeneratedValue 注解详解
查看>>
自定义Template
查看>>
su 和 su -
查看>>
MapReduce:共同好友详解
查看>>
python函数:匿名函数、函数递归与二分法、面向过程编程
查看>>
final、static、代码块、静态代码块、内部类、代码执行顺序
查看>>
LeetCode-Burst Balloons
查看>>
LeetCode-Bitwise AND of Numbers Range
查看>>
Windows Server 2012和2008中使用计划任务定时执行BAT批处理文件 定时备份mysql数据...
查看>>
费马小定理与GCD&LCM
查看>>
P1077 摆花
查看>>
zynq修改ramdisk文件系统
查看>>
C#测量程序运行时间及cpu使用时间
查看>>
并发编程
查看>>
我自己曾经经历的CMMI3认证通过关于软件测试的访谈【转载】
查看>>
C# 操作Excel ——Excel获取数据、时间、图片
查看>>
【Express系列】第3篇——接入mysql
查看>>