远程服务器存储之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>
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 }
以新浪网为例:
URL url = new URL("http://www.sina.com.cn/" + "?name=tom");
以上是关于远程服务器存储之JDK的get请求方式的主要内容,如果未能解决你的问题,请参考以下文章