数据存储——远程服务器存储——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

 

posted @ 2016-06-12 22:45  烟_雨_江_南  阅读(267)  评论(0编辑  收藏  举报