http协议介绍+文件的上传和下载

 http协议介绍:

HTTP,超文本传输协议,英文全称是Hypertext Transfer Protocol,它是互联网上应用最为广泛的一种网络协议。HTTP是一种应用层协议,它是基于TCP协议之上的请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息
请求协议和响应协议

  1. 请求协议:
    ①请求首行:
    ②请求头信息:客户端告诉服务器我这边的信息
    ③空行
    ④请求体:get请求是没有请求体的
  2. 响应协议:
    ①响应首行:HTTP/1.1 200 OK
    ②响应头信息:Content-Length 服务器返回数据的总大小
    ③空行
    ④响应体:服务器返回的数据
  3. 三.使用fiddler进行http抓包工具查看 详细信息 :该软件以后经常用到

  4. Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式
    四.http请求协议
  5. ①请求首行:
    GET /jsp/get.jsp?name=yaotianxue&pass=123456 HTTP/1.1
    POST /jsp/post.jsp HTTP/1.1
    ②请求头信息:客户端告诉服务器我这边的信息
  6. 1.get请求和post请求的区别

    get请求直接将请求参数暴露在url,不安全+一般用于向服务器请求数据
    post请求将请求参数放在请求体里面,安全的+一般用于向服务器提交数据

  7. 3.网络七层

    应用层:应用程序,用户看的见 http协议
    表示层:将人看的懂的转成计算机看的懂
    会话层:发起一个连接
    传输层:规定传输协议和端口号 tcp协议 udp协议
    网络层:规定网络ip ip协议
    数据链路层:
    物理层:光缆、网线

  8. 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协议中预留给能够将连接改为管道方式的代理服务器。

  9. package com.example.administrator.myapplication1;
    
    import com.example.administrator.myapplication1.day1703.DownloadThread;
    import com.example.administrator.myapplication1.day1703.UploadThread;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class NewUtils {
        public static void uplpad(String url, String path, String filname) {
            URL url1 = null;
            try {
                url1 = new URL(url);
                HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("-----------------------------7e324741816d4" + "\r\n");
                stringBuffer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + filname + "\"" + "\r\n");
                stringBuffer.append("Content-Type: media/mp4" + "\r\n");
                stringBuffer.append("/n/r");
                byte[] bytes = stringBuffer.toString().getBytes("UTF-8");
                connection.setRequestProperty("Content_Length", bytes.length + new File(path).length() +
                        "");
                connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=7e324741816d4");
                connection.setRequestMethod("Post");
                connection.setDoOutput(true);
                OutputStream outputStream = connection.getOutputStream();
                FileInputStream fileInputStream = new FileInputStream(path);
                outputStream.write(bytes);
                byte[] bytes1 = new byte[1024];
                int len = 0;
                while ((len = fileInputStream.read(bytes1)) != -1) {
                    outputStream.write(bytes, 0, len);
                }
                if (connection.getResponseCode() == 200) {
                    System.out.println("上传成功");
                }
    
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void upload(String url, String path) {
            new UploadThread("http://169.254.113.244/hfs/","/sdcard/xiaoyueyue.jpg").start();
        }
    
        public static void download(String url, String path) {
            new DownloadThread("http://169.254.113.244/hfs/a.jpg","/sdcard/a.jpg").start();
        }
    }
    
    
  10. package com.example.day1_http;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ProgressBar;

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        Button bt_download,bt_upload;
        ProgressBar bar1,bar2;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }

        private void initView() {
            bt_download=findViewById(R.id.download);
            bt_upload=findViewById(R.id.upload);
            bar1=findViewById(R.id.bar1);
            bar2=findViewById(R.id.bar2);
            bt_download.setOnClickListener(this);
            bt_upload.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.download:
                    download();
                    break;
                case R.id.upload:
                    upload();
                    break;
            }
        }

        private void upload() {
            new UploadThread(“http://169.254.113.244/hfs/”,”/sdcard/xiaoyueyue.jpg”).start();
        }

      
        private void download() {
            new DownloadThread(“http://169.254.113.244/hfs/a.jpg”,”/sdcard/a.jpg”).start();
        }
    }
     

    原文作者:顾@城
    原文地址: https://blog.csdn.net/chen1459/article/details/94766654
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞