HTTP基本使用方法
Http基本使用方法
- 一:HTTP传输协议
- 1.什么是HTTP协议(概念)
- 2.HTTP1.0和HTTP1.1的区别
- 二:GET与POST请求
- 1.八种请求方式,其中最常用的是GET和POST
- 2.get请求和post请求的区别
- 3.请求协议和响应协议
- 4.响应码
- 三:文件上传
- 四:文件下载
- 1.apk下载以及断点续传
一:HTTP传输协议
1.什么是HTTP协议(概念)
HTTP,超文本传输协议,英文全称是Hypertext Transfer Protocol,它是互联网上应用最为广泛的一种网络协议。HTTP是一种应用层协议,它是基于TCP协议之上的请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。
2.HTTP1.0和HTTP1.1的区别
http1.0是非持续连接
http1.1是长久持续连接
二:GET与POST请求
1.八种请求方式,其中最常用的是GET和POST
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
2.get请求和post请求的区别
get请求直接将请求参数暴露在url,不安全+一般用于向服务器请求数据
post请求将请求参数放在请求体里面,安全的+一般用于向服务器提交数据
3.请求协议和响应协议
1.请求协议:
请求首行:
请求头信息:客户端告诉服务器我这边的信息
空行
请求体:get请求是没有请求体的
2.响应协议:
响应首行:HTTP/1.1 200 OK
响应头信息:Content-Length服务器返回数据的总大小
空行
响应体:服务器返回的数据
4.响应码
200:OK,成功
400:服务器无法识别
500:服务器内部错误
三:文件上传
四:文件下载
public static void download(String url,String path) {FileOutputStream fileOutputStream = null;InputStream inputStream=null;try {URL url1 = new URL(url);HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();urlConnection.setReadTimeout(5000);urlConnection.setConnectTimeout(5000);if(urlConnection.getResponseCode()==200){inputStream = urlConnection.getInputStream();fileOutputStream = new FileOutputStream(path);//边读边写byte[] bytes=new byte[1024];int len=0;while((len=inputStream.read(bytes))!=-1){fileOutputStream.write(bytes,0,len);}}} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {//关流if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}
}
1.apk下载以及断点续传
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.app4"><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
代码
public class MainActivity extends AppCompatActivity {private ProgressBar bar;private Button startId,endId;private String path = "http://uvideo.spriteapp.cn/video/2019/0512/56488d0a-7465-11e9-b91b-1866daeb0df1_wpd.mp4";int endnum = 0;private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (msg.what == 101){//读完了Toast.makeText(MainActivity.this, "下载完毕", Toast.LENGTH_SHORT).show();}else if (msg.what == 102){bar.setMax(endnum);}else if (msg.what == 103){bar.setProgress(msg.arg1);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);startId = findViewById(R.id.start_id);endId = findViewById(R.id.pause_id);bar = findViewById(R.id.pro_id);startId.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new MyThread().start();}});}class MyThread extends Thread{@Overridepublic void run() {super.run();getLength(path);downLoad(path);}}public void getLength(String url){URL url1 = null;try {url1 = new URL(url);HttpURLConnection connection = (HttpURLConnection) url1.openConnection();if (connection.getResponseCode() == 200){endnum = connection.getContentLength();//文件最大值//是为了给进度条来设置Message message = new Message();message.what = 102;message.obj = endnum;}} catch (Exception e) {e.printStackTrace();}}//断点下载,更新进度,分批保存,是否是否完成public void downLoad(String url){int start = 0;int end = 1024;int sum = 0;//累计长度try {URL url1 = new URL(url);HttpURLConnection connection = (HttpURLConnection) url1.openConnection();connection.setRequestMethod("GET");connection.setRequestProperty("Range","bytes = "+start+"-"+end);//下载范围0-1024if (connection.getResponseCode() == 206){//断点下载的ok响应码是206InputStream inputStream = connection.getInputStream();//读后写入文件String filepath ="/sdcard/a1705.mp4";RandomAccessFile file = new RandomAccessFile(filepath,"rw");file.seek(start); //设置从哪开始写int len = 0;byte[] bys = new byte[1024];while ((len = inputStream.read(bys))!=-1){file.write(bys,0,len); //写文件内容sum+=len;//记录是否完成更新进度Thread.sleep(1000);Message message = new Message();message.what = 103;message.arg1 = sum;handler.sendMessage(message);//更新进度值if (sum == end){handler.sendEmptyMessage(101);}}}} catch (Exception e) {e.printStackTrace();}}
}
HTTP基本使用方法相关推荐
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群
作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...
- Java面试题大全2021版
一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程
参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- IDEA自动生成对象所有set方法
idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...
- List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...
- java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- Java Calendar.add()方法的使用,参数含义。指定时间差。
cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...
- 设置select下拉框不可修改的→“四”←种方法
设置select下拉框为不可修改的几种方法: 因为select的特殊性,导致它不能像input表单一样简单地设置一个readonly来限制修改,所以,我们需要进行别的操作! 1.为下拉框添加样式,可以 ...
最新文章
- ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
- 长得类似铁甲小宝的机器人_铁甲小宝:小时候只顾看机器人忽略重点,长大后再看:是我太天真...
- 【Android 进程保活】提升进程优先级 ( 使用前台 Service 提高应用进程优先级 | 启动相同 id 的第二个前台 Service 关闭通知 )
- mybaits二:通过接口类,查询数据
- 那些关于区块链革命的事情
- js文件中定义全局配置文件
- 如何用pycharm对比两段代码(或两个文件的代码)
- python编写查询_如何用python脚本编写查询
- (递归7)生成可重集的排列
- CASE WHEN语句中加IN应该如何使用
- Analysis of variance(ANOVA)
- C# 文件查询管理器
- Echarts官网Json获取方式
- Win10系统下如何安装鼠标指针主题包
- vue-hotkey组件——v-hotkey:Vue 2.x指令,用于将热键绑定到组件 v-hotkey=keymap和computed结合使用
- 计算机文化基础试题每日一练15,【每日一练】2018教师[资格考编]笔试备考练习(9.6)...
- 题目 1097: 蛇行矩阵 题解
- 5分钟看懂│从深蓝到阿尔法狗,人机大战20年进化了什么?
- 如何找到appstore下载的系统dmg
- XDoc 基于Java注释生成API文档
热门文章
- 北京理工大学 计算机学院 李侃,吴昊_北京理工大学计算机学院
- 连续语音信号的短时倒谱分析及其参数用途
- Nginx搭建RTMP推拉流服务器
- 全网最硬核 JVM TLAB 分析(额外加菜) 8. 通过 JFR 监控 TLAB
- UDP TCP socket EtherCAT都是什么?
- EndeavourOS移动硬盘安装
- CLion配置STM32开发环境(JLink GDB Server)
- 谈一谈a:link、a:visited、a:hover、a:active的正确使用顺序
- 【NVMe2.0b 12】NVM 容量模型
- 王烁30天认知训练营推荐书单