zoukankan      html  css  js  c++  java
  • 远程服务器存储之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");

    
    
  • 相关阅读:
    Servlet会话管理一(URL重写和表单隐藏域)
    Eclipse自动补全设置
    String类为什么设计成不可变的
    部署描述符(web.xml)和标注(annotation)
    html中 &nbsp; 和空格的区别
    HTML的基本知识点
    Eclipse中配置Tomcat服务器并创建标准Web目录
    Sevlet处理HTML表单
    Servlet API
    Servlet开发的三种方法
  • 原文地址:https://www.cnblogs.com/arxk/p/5578954.html
Copyright © 2011-2022 走看看