远程服务器存储之JDK的get请求方式

Posted 安然罒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程服务器存储之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     <EditText
19         android:layout_width="match_parent"
20         android:layout_height="200dp"
21         android:id="@+id/et_2"/>
22 
23 </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     EditText et_2;
 17 
 18     @Override
 19     protected void onCreate(Bundle savedInstanceState) {
 20         super.onCreate(savedInstanceState);
 21         setContentView(R.layout.activity_test3);
 22 
 23         et_2=(EditText)findViewById(R.id.et_2);
 24     }
 25 
 26     //JDK的Get方式
 27     public void bt1_OnClick(View v)
 28     {
 29         //1.进度对话框
 30         final ProgressDialog progressDialog=ProgressDialog.show(this,null,"正在加载,请稍候...");
 31 
 32         //2.开启子线程,访问网络
 33         new Thread(){
 34             @Override
 35             public void run() {
 36 
 37                 try {
 38 
 39                     //1-URL
 40                     URL url = new URL(et_2.getText().toString() + "?name=tom");
 41 
 42                     //2-URL获取连接
 43                     HttpURLConnection huc=(HttpURLConnection)url.openConnection();
 44 
 45                     //请求方式
 46                     huc.setRequestMethod("GET");
 47 
 48                     //设置超时
 49                     huc.setConnectTimeout(3000);
 50                     huc.setReadTimeout(3000);
 51 
 52                     //连接并发送请求
 53                     huc.connect();
 54 
 55                     //接收:
 56                     //判断返回状态码 200
 57                     int code=huc.getResponseCode();
 58 
 59                     if (code==200)
 60                     {
 61                         //接收数据
 62 
 63                         //输入流:
 64                         InputStream is=huc.getInputStream();
 65 
 66                         //读取流
 67 
 68                         //1-byte数组
 69                         byte[] b=new byte[1024];
 70 
 71                         //2-读到数组的长度
 72                         int i=0;
 73 
 74                         //3-数据
 75                         final StringBuilder sbl=new StringBuilder();
 76 
 77                         while ((i=is.read(b))>0)
 78                         {
 79                             sbl.append(new String(b,0,i));
 80                         }
 81 
 82                         //释放资源
 83                         is.close();
 84 
 85                         huc.disconnect();
 86 
 87                         //通过主线程显示信息和关闭对话框
 88                         runOnUiThread(new Runnable() {
 89                             @Override
 90                             public void run() {
 91 
 92                                 et_2.setText(sbl);
 93 
 94                                 progressDialog.dismiss();
 95                             }
 96                         });
 97                     }
 98                     else
 99                     {
100                         Toast.makeText(TestActivity3.this, "连接错误,返回的状态码="+code, Toast.LENGTH_SHORT).show();
101                     }
102 
103 
104                 }catch (Exception e){
105 
106                     e.printStackTrace();
107 
108                     progressDialog.dismiss();
109 
110                 }
111             }
112         }.start();
113 
114 
115     }
116 }
.java

 

以新浪网为例:

URL url = new URL("http://www.sina.com.cn/" + "?name=tom");


以上是关于远程服务器存储之JDK的get请求方式的主要内容,如果未能解决你的问题,请参考以下文章

远程服务器存储之框架方式的get和post请求方式

ajax请求之load

Spring RestTemplate 之get请求

spring cloud 之 Feign 使用HTTP请求远程服务

HTTP请求方式之GET和POST比较

Python之HTTP请求报文