安卓中常见的网络请求方式
HttpUrlConnection
1.get请求
2.post请求
3.下载网络视频/音乐/图片到SD卡中
一.概念:
1.http:超文本传输协议(客户端和服务端),应用层协议
2.html:超文本标记语言
3.xml:可扩展标记语言
二.网络七层
应用层:http
表示层:将人看的懂的转成计算器
会话层:发起会话
传输层:tcp协议+udp协议
网络层:ip协议
数据链路层:
物理层:网线
三.http协议:请求协议+响应协议
1.请求协议:客户端向服务端发送的
(1)请求首行:请求方式+地址+版本号
(2)请求头信息:客户端告诉服务端自己的一些信息
(3)空行
(4)请求体:客户端向服务端发送的数据(get请求没有请求体,post请求有请求)
2.响应协议:服务端给客户端响应的
(1)响应首行:版本号+响应码+响应信息
(2)响应头信息:服务器告诉客户端的信息 Content-Length: 4772
(3)空行
(4)响应体:服务器返回给客户端的内容(图片 json xml)
四.2个软件:
fiddler:抓包用的,能够获取http请求协议和响应协议内容
postman:测接口用的,每次直接在这个软件上面测接口
五.技能点:使用httpurlConnection做get请求和post请求
1.get和post的区别:
get将发送的数据暴露在url,不安全的+主要应用向服务器要数据
post将发送的数据放在请求体,安全的+主要应用向服务器提交数据
2.get:下载文件+请求图片+请求json
3.post:登陆+注册+上传文件
六.八种请求方式,常用的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协议中预留给能够将连接改为管道方式的代理服务器。
七.常用响应码:1xx 消息 2xx 成功 3xx重定向 4xx客户端错误 5xx服务器
滚动歌词效果
//主类
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback{
File file = new File("/sdcard/Misc/春风十里");
File file1=new File("/sdcard/Misc/前冲 - 春风十里.mp3");
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
SeekBar seekBar;
MediaPlayer mediaPlayer;
Timer timer;
int positon=0;
TextView textView1,textView2;
ArrayList<Music> list=new ArrayList<>();
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==101){
if (mediaPlayer!=null){
int duration = mediaPlayer.getDuration();
int currentPosition = mediaPlayer.getCurrentPosition();
Date date=new Date(duration);
SimpleDateFormat sdf=new SimpleDateFormat("mm:ss");
String format = sdf.format(date);
seekBar.setMax(duration);
seekBar.setProgress(currentPosition);
textView2.setText(format);
Date date1=new Date(currentPosition);
String format1 = sdf.format(date1);
textView1.setText(format1);
if (list.size()>0){
if (positon<list.size()-1){
if (currentPosition>=