美文网首页
POST和GET上传数据和下载数据

POST和GET上传数据和下载数据

作者: 古拉啦啦 | 来源:发表于2019-08-24 19:04 被阅读0次

前言:不知不觉,java的学习我们已经接近尾声了,今天我们就以上传数据和下载数据结尾,过了今天我们就进入安卓的开发之旅。

首先在讲解POST和GET之前,我们先来学习一下 HttpURLConnection,这是一个抽象类,在此之前我们是没有接触过的,所以我觉得在学习向服务器端上传数据下载数据之前,我们必须知道这个抽象类的作用。

1. URLConnection抽象类

URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。在很多时候我们要将URLConnection转换为HttpURLConnection,目的是能使用更多的API,如下所示:

  • 1 URL url = new URL("http://192.168.43.32/login.php");
  • 2 URLConnection rulConnection = url.openConnection();
  • 3 /*
    此处的urlConnection对象实际上是根据URL的 请求协议(此处是http)生成的URLConnection类 的子类HttpURLConnection,故此处最好将其转化 为HttpURLConnection类型的对象,以便用到 HttpURLConnection更多的API.如下:
    */
  • 4 HttpURLConnection httpUrlConnection = (HttpURLConnection) urlConnection;
2. HttpURLConnection 的一些方法

(1) .设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 http正文内,因此需要设为true, 默认情况下是false;

        httpUrlConnection.setDoOutput(true);   

(2). 设置是否从httpUrlConnection读入,默认情况下是true;

        httpUrlConnection.setDoInput(true);   

(3). Post 请求不能使用缓存

    httpUrlConnection.setUseCaches(false);   

(4). 设定请求的方法为"POST",默认是GET

    httpUrlConnection.setRequestMethod("POST");   

(5). 连接,从上述第2条中url.openConnection()至此的配置必须要在connect之前完成,

       httpUrlConnection.connect();  
3. HttpURLConnection连接问题:
       OutputStream outStrm = httpUrlConnection.getOutputStream(); 

这里的getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法,个人认为在开发中不调用上述的connect()也可以)。

4. HttpURLConnection写数据与发送数据问题:

思路是:


  1. 打开一个URL连接

     URL url = new URL("http://192.168.43.32/login.php");
    

2 .获取connection对象

  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  1. 设置参数

     httpConn.setDoOutput(true);     //需要输出
    httpConn.setDoInput(true);      //需要输入
     httpConn.setUseCaches(false);   //不允许缓存
    
  2. 设置请求方式为post

     connection.setRequestMethod("POST");
    
  3. 准备上传数据

    String data = "yourname= jack&userpassword=123";
    

6.开始上传 设置输出流,需要上传

 OutputStream os = connection.getOutputStream();
        os.write(data.getBytes());
        os.flush();//表示写完了
  1. 接受服务器端返回的数据

    InputStream is = connection.getInputStream();
         byte[] buf = new byte[1024];
         int len;
         while ((len = is.read(buf)) != -1) {
             System.out.println(new String(buf, 0, len));
         }
     }
    

另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。

5.URL请求的类别:

分为二类,GET与POST请求。二者的区别在于:
a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
上面我们讲解了post请求方式,下面我们来看看get 方式:

一:不带参数的GET请求的步骤:

  1. 打开一个URL 链接
    2.获取与服务器连接的对象
    3.读取下载内容
    源代码如下:

    URL url= new URL("http://192.168.43.32/1.png");
     //获取与服务器连接的对象
     URLConnection connection1 = url.openConnection();
     //读取下载内容
     InputStream fsi=connection1.getInputStream();
    FileInputStream fos = new FileInputStream("C:\\Users\\Administrator\\Desktop\\java\\java\\java1\\src\\main\\java\\day14");
             byte[] buf2 = new byte[1024];
             int len2;
             while ((len2 = fsi.read(buf2)) != -1){
               System.out.println(new String(buf2,0,len2));
             }
    

二:带参数的GET请求方式的步骤如下:

1.打开一个URL 链接

    String path = "http://192.168.43.32/login.php?" + "yourname=1232&user_password=2";
   URL url1 = new URL(path);

2.获取与服务器连接的对象

URLConnection connection1 = url1.openConnection();

3.设置请求方式,默认是get

HttpURLConnection httpConnecion = (HttpURLConnection) connection1;
 httpConnecion.setRequestMethod("GET");

4.读取下载内容

   InputStream is1 = httpConnecion.getErrorStream();
        byte[] buf1 = new byte[1024];
        int len1;
        while ((len1 = is1.read(buf1)) !=-1 ){
            System.out.println(new String(buf1,0,len1));
        }
        }

对比:POST和GET的步骤都差不多一样的,设置参数get也可以设置,只是上面我们采用了默认的请求方式,设置输出流,get方式,我们是吧参数放在了url中,所以答题上这些步骤都是一样的。


时间就是这么快,一个月就过去了,我们java 课程的学习就到此结束了,安卓见!~~~~~~~

相关文章

  • POST和GET上传数据和下载数据

    前言:不知不觉,java的学习我们已经接近尾声了,今天我们就以上传数据和下载数据结尾,过了今天我们就进入安卓的开发...

  • Volley

    Android Volley使用 Get和Post区别 GET用来从服务端获取数据,POST用于上传或者修改数据 ...

  • iOS post和get请求

    get和post请求的区别 1,post请求 请求地址和参数分离,比get更安全 2,get请求能上传数据不能上传...

  • axios的各种请求及传参

    get请求数据 用params传参数是一个对象 post和put上传数据 delete删除数据

  • http协议,tcp/udp汇总

    GET和POST请求方式的区别? get获取数据,post发送数据 get拼接URL后面,post参数放在body...

  • swift network

    一. URLSession: 加载数据 下载数据 上传数据 post 二. WebSocket

  • iOSAFNetworking

    用AFNetworking发送Post和Get请求 AFNetworking下载 AFNetworking上传 A...

  • 如何使用Nodejs中的express接受GET和POST数据以

    使用express接受get和post数据,首先下载我们所需要的框架 express和express-stati...

  • GET和POST

    GET和POST请求的区别 GET请求 POST请求 提交 GET提交,请求的数据会附在URL之后(就是把数据放置...

  • iOS简单地网络请求

    介绍一下项目中常用的网络请求GET和POST。 1.GET主要用于数据查询,POST主要用于登录注册,文件上传等,...

网友评论

      本文标题:POST和GET上传数据和下载数据

      本文链接:https://www.haomeiwen.com/subject/vwfqectx.html