• 数据存储——远程服务器存储——JDK的get请求方式


    一.HTTP协议

       1.超文本传输协议

       2.支持客户端/服务器端模式

       3.内容

        1-请求协议

         1>请求报文格式

            1>-请求行:请求方式  请求资源名  协议版本号;

            2>-请求消息头

            3>-请求体

         2>请求方式

            1>-POST:请求内容在请求体里,以键=值的形式,键值对之间用&间隔;长度不受限制,保密性高。

            2>-GET:请求内容在URL后面用?开始,以键=值的形式,键值对之间用&间隔;请求报文没有请求体;请求数据的长度受到浏览器的限制;请求数据保密性低。

        2-响应协议:响应报文格式

         1>响应状态行:描述服务器处理结果;响应状态码为200成功。

         2>响应消息头

         3>响应体

    二.方式

       1.JDK方式

       2.Android方式

       3.框架方式

    JDK的get请求方式  代码

    先设置网络访问权限:

    <uses-permission android:name="android.permission.INTERNET"/>

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:paddingBottom="@dimen/activity_vertical_margin"
     7     android:paddingLeft="@dimen/activity_horizontal_margin"
     8     android:paddingRight="@dimen/activity_horizontal_margin"
     9     android:paddingTop="@dimen/activity_vertical_margin"
    10     tools:context="com.hanqi.testapp3.TestActivity3"
    11     android:orientation="vertical">
    12 
    13     <Button
    14         android:layout_width="match_parent"
    15         android:layout_height="wrap_content"
    16         android:text="JDK-Get方式"
    17         android:onClick="bt1_OnClick"/>
    18 
    19     <EditText
    20         android:layout_width="match_parent"
    21         android:layout_height="200dp"
    22         android:id="@+id/et_2"/>
    23 
    24 </LinearLayout>
    .xml
      1 package com.hanqi.testapp3;
      2 
      3 import android.app.ProgressDialog;
      4 import android.support.v7.app.AppCompatActivity;
      5 import android.os.Bundle;
      6 import android.view.View;
      7 import android.widget.EditText;
      8 import android.widget.Toast;
      9 
     10 import java.io.InputStream;
     11 import java.net.HttpURLConnection;
     12 import java.net.URL;
     13 
     14 public class TestActivity3 extends AppCompatActivity {
     15 
     16 
     17     EditText et_2;
     18 
     19     @Override
     20     protected void onCreate(Bundle savedInstanceState) {
     21         super.onCreate(savedInstanceState);
     22         setContentView(R.layout.activity_test3);
     23 
     24         et_2=(EditText)findViewById(R.id.et_2);
     25     }
     26 
     27     //JDK的Get方式
     28     public void bt1_OnClick(View v)
     29     {
     30         //1.进度对话框
     31         final ProgressDialog progressDialog = ProgressDialog.show(this,null,"正在加载,请稍后...");
     32 
     33         //2.开启子线程,访问网络
     34         new Thread(){
     35             public void run()
     36             {
     37                 try {
     38                 //1.URL
     39                 URL url = new URL(et_2.getText().toString() + "?name=tom");
     40 
     41                 //2.URL获取连接
     42                 HttpURLConnection huc = (HttpURLConnection) url.openConnection();
     43 
     44                 //请求方式
     45                 huc.setRequestMethod("GET");
     46 
     47                 //设置超时
     48                 huc.setConnectTimeout(3000);
     49                 huc.setReadTimeout(3000);
     50 
     51                 //连接并发送请求
     52                 huc.connect();
     53 
     54                 //接收
     55                 //判断返回状态码 200
     56                 int code = huc.getResponseCode();
     57 
     58                 if (code == 200) {
     59                     //接收数据
     60                     //输入流
     61                     InputStream is = huc.getInputStream();
     62 
     63                     //读取流
     64 
     65                     //1.byte数组
     66                     byte[] b = new byte[1024];
     67 
     68                     //2.读到数组的长度
     69                     int i = 0;
     70 
     71                     //3.数据
     72                     final StringBuilder sbl = new StringBuilder();
     73 
     74                     while ((i = is.read(b)) > 0) {
     75                         sbl.append(new String(b, 0, i));
     76                     }
     77 
     78                     //释放资源
     79                     is.close();
     80                     huc.disconnect();
     81 
     82                     //通过主线程显示信息和关闭对话框
     83                     runOnUiThread(new Runnable() {
     84                         @Override
     85                         public void run() {
     86                             et_2.setText(sbl);
     87 
     88                             progressDialog.dismiss();
     89                         }
     90                     });
     91                 } else {
     92                     Toast.makeText(TestActivity3.this, "连接错误,返回的状态码=" + code, Toast.LENGTH_SHORT).show();
     93                 }
     94             }
     95                 catch (Exception e)
     96                 {
     97                     e.printStackTrace();
     98 
     99                     progressDialog.dismiss();
    100                 }
    101             }
    102         }.start();
    103     }
    104 }
    .java

  • 相关阅读:
    python爬虫知识点总结(二十一)Scrapy中Spiders用法
    python爬虫知识点总结(二十)Scrapy中选择器用法
    python爬虫知识点总结(十九)Scrapy命令行详解
    python爬虫知识点总结(十八)Scrapy框架基本使用
    python爬虫知识点总结(十七)Scrapy框架安装
    python爬虫知识点总结(十六)PySpider框架概述和用法详解
    python爬虫知识点总结(十五)PySpider框架基本使用以及抓取TripAdvisor
    python爬虫知识点总结(十四)使用Redis和Flask维护Cookies池
    python爬虫知识点总结(十三)使用代理处理反扒抓取微信文章
    图像识别
  • 原文地址:https://www.cnblogs.com/cycanfly/p/5579062.html
Copyright © 2020-2023  润新知