数据储存——远程服务器存储——JDK方式

JDK方式

API

一.URL

1.new  URL("http://网络资源路径")

2.openConnection(),返回URLConnection对象

二.HttpURLConnection

1.setRequestMethod(“GET”/“POST”):设置请求方式

2.setConnectTimeout(毫秒数):设置连接超时时间

3.setReadTimeout(毫秒数):设置读超时时间

4.connect( ):连接服务器,发送请求

5.getOutputStream( ):得到连接输出流,通过输出流向服务器发送请求体

6.getResponseCode( ):得到响应状态码,200代表正常响应

7.getInputStream( ):得到连接输入流,通过输入流接收服务器发送的响应体

8.disconnect( ):断开连接

 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     <LinearLayout
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content">
16         <Button
17             android:layout_width="0dp"
18             android:layout_height="wrap_content"
19             android:layout_weight="1"
20             android:text="JDK-Post方式"
21             android:onClick="bt2_OnClick"/>
22     <Button
23         android:layout_width="0dp"
24         android:layout_height="wrap_content"
25         android:layout_weight="1"
26         android:text="JDK-Get方式"
27         android:onClick="bt1_OnClick"/>
28     </LinearLayout>
29 <EditText
30         android:layout_width="match_parent"
31         android:layout_height="200dp"
32         android:id="@+id/et_2"/>
33
34 </LinearLayout>

.xml

  1 package com.hanqi.testapp3;
  2
  3 import android.app.ProgressDialog;
  4 import android.os.Bundle;
  5 import android.support.v7.app.AppCompatActivity;
  6 import android.util.Log;
  7 import android.view.View;
  8 import android.widget.EditText;
  9
 10 import java.io.InputStream;
 11 import java.io.OutputStream;
 12 import java.net.HttpURLConnection;
 13 import java.net.URL;
 14
 15 public class TestActivity3 extends AppCompatActivity {
 16
 17
 18     EditText et_2;
 19
 20     @Override
 21     protected void onCreate(Bundle savedInstanceState) {
 22         super.onCreate(savedInstanceState);
 23         setContentView(R.layout.activity_test3);
 24
 25         et_2=(EditText)findViewById(R.id.et_2);
 26     }
 27
 28     //JDK的Get方式
 29 //    public void bt1_OnClick(View v)
 30 //    {
 31 //        //1.进度对话框
 32 //        final ProgressDialog progressDialog = ProgressDialog.show(this,null,"正在加载,请稍后...");
 33 //
 34 //        //2.开启子线程,访问网络
 35 //        new Thread(){
 36 //            public void run()
 37 //            {
 38 //                try {
 39 //                //1.URL
 40 //                URL url = new URL(et_2.getText().toString() + "?name=tom");
 41 //                    //URL url = new URL("http://www.youku.com/" + "?name=tom");
 42 //
 43 //                //2.URL获取连接
 44 //                HttpURLConnection huc = (HttpURLConnection) url.openConnection();
 45 //
 46 //                //请求方式
 47 //                huc.setRequestMethod("GET");
 48 //
 49 //                //设置超时
 50 //                huc.setConnectTimeout(3000);
 51 //                huc.setReadTimeout(3000);
 52 //
 53 //                //连接并发送请求
 54 //                huc.connect();
 55 //
 56 //                //接收
 57 //                //判断返回状态码 200
 58 //                int code = huc.getResponseCode();
 59 //
 60 //                if (code == 200) {
 61 //                    //接收数据
 62 //                    //输入流
 63 //                    InputStream is = huc.getInputStream();
 64 //
 65 //                    //读取流
 66 //
 67 //                    //1.byte数组
 68 //                    byte[] b = new byte[1024];
 69 //
 70 //                    //2.读到数组的长度
 71 //                    int i = 0;
 72 //
 73 //                    //3.数据
 74 //                    final StringBuilder sbl = new StringBuilder();
 75 //
 76 //                    while ((i = is.read(b)) > 0) {
 77 //                        sbl.append(new String(b, 0, i));
 78 //                    }
 79 //
 80 //                    //释放资源
 81 //                    is.close();
 82 //                    huc.disconnect();
 83 //
 84 //                    //通过主线程显示信息和关闭对话框
 85 //                    runOnUiThread(new Runnable() {
 86 //                        @Override
 87 //                        public void run() {
 88 //                            et_2.setText(sbl);
 89 //
 90 //                            progressDialog.dismiss();
 91 //                        }
 92 //                    });
 93 //                } else {
 94 //                    Toast.makeText(TestActivity3.this, "连接错误,返回的状态码=" + code, Toast.LENGTH_SHORT).show();
 95 //                }
 96 //            }
 97 //                catch (Exception e)
 98 //                {
 99 //                    e.printStackTrace();
100 //
101 //                    progressDialog.dismiss();
102 //                }
103 //            }
104 //        }.start();
105 //    }
106
107     //JDK的Get方式
108
109     //显示结果
110     String str = "";
111
112     public void bt1_OnClick(View v)
113     {
114         //1.启动进度对话框
115         final ProgressDialog pd = ProgressDialog.show(this,null,"正在加载,请稍后...");
116         //2.启动子线程,访问远程服务器
117         new Thread(){
118             @Override
119             public void run() {
120
121                 //访问远程服务器
122                 //JDK Get
123                 HttpURLConnection huc = null;
124
125                 try {
126                     //1.构造URL对象
127                     URL url = new URL("http://192.168.0.128:81/index.asp?name=mike&password=456");
128
129                     //2.得到HttpURLConnection
130                      huc = (HttpURLConnection) url.openConnection();
131
132                     //3.设置HttpURLConnection
133                     huc.setRequestMethod("GET");
134                     huc.setConnectTimeout(3000);
135                     huc.setReadTimeout(3000);
136
137                     //4.连接远程服务器
138                     huc.connect();
139
140                     //5.接收响应报文的状态码
141                     int code = huc.getResponseCode();
142
143                     str = "";
144
145                     //6.判断响应状态码是否=200
146                     if (code == 200) {
147                         //1.接收数据
148
149                         //2.得到数据流
150                         InputStream is = huc.getInputStream();
151
152                         //读到的数据
153                         byte[] b = new byte[1024];
154
155                         //读到的数据长度
156                         int i = 0;
157
158                         while ((i = is.read(b)) > 0)
159                         {
160                             //接收字符串
161                             str +=new String(b,0,i);
162                         }
163
164                         is.close();
165                     }
166                     else
167                     {
168                         str = "响应错误,错误码=" + code;
169                     }
170
171                     huc.disconnect();
172
173                     //7.处理  显示结果,不能直接跨线程访问主线程的视图
174                     runOnUiThread(new Runnable() {
175                         @Override
176                         public void run() {
177
178                             et_2.setText(str);
179
180
181                         }
182                     });
183
184                     //支持跨线程访问
185                     pd.dismiss();
186
187
188                 }
189                 catch (Exception e)
190                 {
191                     e.printStackTrace();
192                 }
193                 finally {
194                     //8.关闭连接和进度对话框
195                     //释放资源
196
197                     if (huc !=null)
198                     {
199                         huc.disconnect();
200                     }
201
202                     //支持跨线程访问
203                     pd.dismiss();
204                 }
205             }
206         }.start();
207     }
208
209
210
211
212     //Post的Get方式
213
214     //显示结果
215
216
217     public void bt2_OnClick(View v)
218     {
219         //1.启动进度对话框
220         final ProgressDialog pd = ProgressDialog.show(this,null,"正在加载,请稍后...");
221         //2.启动子线程,访问远程服务器
222         new Thread(){
223             @Override
224             public void run() {
225
226                 //访问远程服务器
227                 //JDK Get
228                 HttpURLConnection huc = null;
229
230                 try {
231                     //1.构造URL对象
232                     URL url = new URL("http://192.168.0.128:81/index.asp");
233
234                     //2.得到HttpURLConnection
235                     huc = (HttpURLConnection) url.openConnection();
236
237                     //3.设置HttpURLConnection
238                     huc.setRequestMethod("POST");
239                     huc.setConnectTimeout(3000);
240                     huc.setReadTimeout(3000);
241
242
243                     //4.连接远程服务器,输出流
244                     huc.connect();
245
246                     //数据放到请求体里
247                     //1)得到输出流
248                     OutputStream os = huc.getOutputStream();
249
250                     String outstr = "name=tom&password=123";
251
252                     os.write(outstr.getBytes("UTF-8"));
253
254                     os.close();
255
256                     Log.e("Tag","发送...");
257
258                     //5.接收响应报文的状态码
259                     int code = huc.getResponseCode();
260
261                     str = "";
262
263                     //6.判断响应状态码是否=200
264                     if (code == 200) {
265
266                         Log.e("Tag","接收...");
267
268                         //7.处理
269                         //1.接收数据
270
271                         //2.得到数据流,输入流
272                         InputStream is = huc.getInputStream();
273
274                         //读到的数据
275                         byte[] b = new byte[1024];
276
277                         //读到的数据长度
278                         int i = 0;
279
280                         while ((i = is.read(b)) > 0)
281                         {
282                             //接收字符串
283                             str +=new String(b,0,i);
284                         }
285
286                         is.close();
287                         os.close();
288                     }
289                     else
290                     {
291                         str = "响应错误,错误码=" + code;
292                     }
293
294
295
296                     //显示结果,不能直接跨线程访问主线程的视图
297                     runOnUiThread(new Runnable() {
298                         @Override
299                         public void run() {
300
301                             et_2.setText(str);
302
303
304                         }
305                     });
306
307                     //支持跨线程访问
308                     pd.dismiss();
309
310
311                 }
312                 catch (Exception e)
313                 {
314                     e.printStackTrace();
315                 }
316                 finally {
317                     //8.关闭连接和进度对话框
318                     //释放资源
319
320                     if (huc !=null)
321                     {
322                         huc.disconnect();
323                     }
324
325                     //支持跨线程访问
326                     pd.dismiss();
327                 }
328             }
329         }.start();
330     }
331 }

.java

JDK-Get方式


JDK-Post方式

				
时间: 2024-10-27 06:32:04

数据储存——远程服务器存储——JDK方式的相关文章

数据储存——远程服务器存储——框架方式

一.Volley 1.特点 ①轻量级的Android网络通信库 ②适合数量不大但通信频繁的场景 2.API 1.RequestQueue ①请求队列 ②Volley.newRequestQueue(context) 创建或得到请求队列    单例模式 ③add(Request)添加请求到队列中 2.Request ①封装请求的基类 ②子类 1)StringRequest  返回字符串的请求 构造方法: new  StringRequest(get_path,正常响应监听,异常响应监听)   实现

数据储存——远程服务器存储——JSON

JSON 一.特点 1.JavaScript Object Notation 2.一种轻量级的数据交互格式 二.格式 1.[ ] 数组:[value1, value2, value3...] 2.{ } 对象:{key1:value1, key2:value2, key3:value3,...} 1-key:字符串,表示对象的属性 2-value:表示属性的值 数据类型:数值,字符串,null,json数组,json对象. 三.API 1.Android原生 2.第三方框架 1 <?xml ve

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

一.HTTP协议 1.超文本传输协议 2.支持客户端/服务器端模式 3.内容 1-请求协议 1>请求报文格式 1>-请求行:请求方式  请求资源名  协议版本号; 2>-请求消息头 3>-请求体 2>请求方式 1>-POST:请求内容在请求体里,以键=值的形式,键值对之间用&间隔;长度不受限制,保密性高. 2>-GET:请求内容在URL后面用?开始,以键=值的形式,键值对之间用&间隔:请求报文没有请求体:请求数据的长度受到浏览器的限制:请求数据保密

远程服务器存储之JDK方式

一.API 1.new  URL("http://网络资源路径") 2.openConnection(),返回URLConnection对象 二.HttpURLConnection 1.setRequestMethod(“GET”/“POST”):设置请求方式 2.setConnectTimeout(毫秒数):设置连接超时时间 3.setReadTimeout(毫秒数):设置读超时时间 4.connect( ):连接服务器,发送请求 5.getOutputStream( ):得到连接输

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

一.HTTP协议 1.超文本传输协议 2.支持客户端/服务器端模式 3.内容 1-请求协议 1>请求报文格式 1>-请求行:请求方式  请求资源名  协议版本号; 2>-请求消息头 3>-请求体 2>请求方式 1>-POST:请求内容在请求体里,以键=值的形式,键值对之间用&间隔;长度不受限制,保密性高. 2>-GET:请求内容在URL后面用?开始,以键=值的形式,键值对之间用&间隔:请求报文没有请求体:请求数据的长度受到浏览器的限制:请求数据保密

WCF LIST 传输大数据,远程服务器返回了意外响应 400

WCF传输LIST 大数据量 出现 远程服务器返回了意外响应 400 错误提示. 出现这个问题,各种搜索,都没有解决问题,而且有些都比较复杂,自己琢磨了一下,其实也不是很难,好了,看下面方案.解决方案:在web.config(host)端<system.serviceModel>节中, 增加 services 节 如下:<services>      <service behaviorConfiguration="app.dcgkbehavior" nam

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

一.Volley 1.特点 1-轻量级的Android网络通信库 2-适合数量不大但通信频繁的场景 2.API 1-RequestQueue 1>请求队列 2>Volley.newRequestQueue(context)  :创建或得到请求队列并且是单例模式 3>add(Request):添加请求到队列中 2-Request 1>封装请求的基类 2>子类 1>-StringRequest:返回字符串的请求 构造方法:1-new StringRequest(get_pa

Android——远程存储器存储:JDK方式和Volley框架的get和post

注意:要搭建好环境,运行 用volley方法时要把包导入project下的模块下的libs目录下 package com.example.chenshuai.myapplication; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widge

Android发送数据到web服务器4种方式

/** * Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDat