JDK方式

layout文件

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

layout

java代码

  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.view.View;
  7 import android.widget.EditText;
  8
  9 import java.io.InputStream;
 10 import java.io.OutputStream;
 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
 27     //显示结果
 28     String str = "";
 29
 30     //JDK的Get方式
 31     public void bt1_OnClick(View v)
 32     {
 33         //1、启动进度对话框
 34         final ProgressDialog pd = ProgressDialog.show(this, null, "请稍后...");
 35
 36         //2、启动子线程,访问远程服务器
 37         new Thread()
 38         {
 39             @Override
 40             public void run() {
 41
 42                 //访问远程服务器
 43                 //JDK Get
 44
 45                 HttpURLConnection huc = null;
 46
 47                 try {
 48                 //1、构造URL对象
 49                     URL url = new URL("http://192.168.0.105:81/index.asp?name=mike&password=456");
 50
 51                 //2、得到 HttpURLConnection
 52                     huc = (HttpURLConnection)url.openConnection();
 53
 54                 //3、设置 HttpURLConnection
 55                     huc.setRequestMethod("GET");
 56                     huc.setConnectTimeout(3000);
 57                     huc.setReadTimeout(3000);
 58
 59                 //4、连接远程服务器
 60                     huc.connect();
 61
 62                 //5、接收响应报文的状态码
 63                     int code = huc.getResponseCode();
 64
 65                     str = "";
 66
 67                 //6、判断响应状态码是否=200
 68                     if (code == 200)
 69                     {
 70                         //7、处理
 71                         //1 接收数据
 72
 73                         //2 得到数据流
 74                         InputStream is = huc.getInputStream();
 75
 76                         //读到的数据
 77                         byte[] b = new byte[1024];
 78
 79                         //读到的数据长度
 80                         int i = 0;
 81
 82                         while ((i = is.read(b)) > 0)
 83                         {
 84                             // 接收字符串
 85                             str += new String(b,0,i);
 86                         }
 87
 88                         is.close();
 89                     }
 90                     else
 91                     {
 92                         str = "响应错误,错误码=" + code;
 93                     }
 94
 95                     //显示结果,不能直接跨线程访问主线程的视图
 96                     runOnUiThread(new Runnable() {
 97                         @Override
 98                         public void run() {
 99                             et_2.setText(str);
100
101                         }
102                     });
103
104                 }
105                 catch (Exception e)
106                 {
107                     e.printStackTrace();
108                 }
109                 finally {
110
111                     //8、关闭连接和进度对话框
112                     // 释放资源
113                     if (huc != null)
114                     {
115                         huc.disconnect();
116                     }
117
118                     // 支持跨线程访问
119                     pd.dismiss();
120
121                 }
122             }
123         }.start();
124     }
125
126
127     //JDK的Post方式
128     public void bt2_OnClick(View v)
129     {
130         //1、启动进度对话框
131         final ProgressDialog pd = ProgressDialog.show(this, null, "请稍后...");
132
133         //2、启动子线程,访问远程服务器
134         new Thread()
135         {
136             @Override
137             public void run() {
138
139                 //访问远程服务器
140                 //JDK Post
141
142                 HttpURLConnection huc = null;
143
144                 try {
145                     //1、构造URL对象
146                     URL url = new URL("http://192.168.0.105:81/index.asp");
147
148                     //2、得到 HttpURLConnection
149                     huc = (HttpURLConnection)url.openConnection();
150
151                     //3、设置 HttpURLConnection
152                     huc.setRequestMethod("POST");
153                     huc.setConnectTimeout(3000);
154                     huc.setReadTimeout(3000);
155
156                     //4、连接远程服务器,输出流
157                     huc.connect();
158
159                     //数据放到请求体里
160                     // 1)得到输出流
161                     OutputStream os = huc.getOutputStream();
162
163                     String outstr = "name=tom&password=123";
164
165                     os.write(outstr.getBytes("UTF-8"));
166
167                     os.close();
168
169                     //5、接收响应报文的状态码
170                     int code = huc.getResponseCode();
171
172                     str = "";
173
174                     //6、判断响应状态码是否=200
175                     if (code == 200)
176                     {
177                         //7、处理
178                         //1 接收数据
179
180                         //2 得到数据流,输入流
181                         InputStream is = huc.getInputStream();
182
183                         //读到的数据
184                         byte[] b = new byte[1024];
185
186                         //读到的数据长度
187                         int i = 0;
188
189                         while ((i = is.read(b)) > 0)
190                         {
191                             // 接收字符串
192                             str += new String(b,0,i);
193                         }
194
195                         is.close();
196                     }
197                     else
198                     {
199                         str = "响应错误,错误码=" + code;
200                     }
201
202                     //显示结果,不能直接跨线程访问主线程的视图
203                     runOnUiThread(new Runnable() {
204                         @Override
205                         public void run() {
206                             et_2.setText(str);
207
208                         }
209                     });
210
211                 }
212                 catch (Exception e)
213                 {
214                     e.printStackTrace();
215                 }
216                 finally {
217
218                     //8、关闭连接和进度对话框
219                     // 释放资源
220                     if (huc != null)
221                     {
222                         huc.disconnect();
223                     }
224
225                     // 支持跨线程访问
226                     pd.dismiss();
227
228                 }
229             }
230         }.start();
231     }
232 }

Java代码

index.asp

 1 <%
 2 name_get = request.querystring("name")
 3 password_get = request.querystring("password")
 4
 5 name_post = request.form("name")
 6 password_post = request.form("password")
 7
 8 %>
 9 request:<br>
10
11 name_1=<%=name_get%>
12 password_1=<%=password_get%>
13
14 name_2=<%=name_post%>
15 password_2=<%=password_post%>

index.asp

时间: 2024-10-26 03:08:23

JDK方式的相关文章

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

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

远程服务器存储之JDK方式

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

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

利用JDK方式和GuavaAPI方式实现观察者模式

1.JDK方法实现案例需求: 去餐厅吃饭有时候需要排队,进行排队叫号.假如所有等待的人都是观察者,叫号系统就是一个被监听的主题对象.当叫号系统发出叫号通知后,所有等待的人,都会收到通知,然后检查自己的号码是否匹配.匹配的话,就开始就餐,不匹配的,继续等待 package com.gupao.jay.pattern.observer.jdk; /** * @Author JAY * @Date 2019/6/2 8:41 * @Description 排队的号码 **/ public class

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

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

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

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

实现动态代理的两种方式介绍+例子demo(JDK、CGlib)

JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢? 这就需要CGLib了.CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑. JDK动态代理与CGLib动态代理均是实现Spring AOP的基础. 一.JDK这种方式动态代理 1. 没引入spring配置文件时,怎么实现JDK动态代理 情景介绍:如何解决全站中文乱码问题? 我们会定义一个过滤器:Character

Ubuntu Kylin 14.04 安装配置 jdk、eclipse、tomcat 通用

一.安装jdk 1)首先去sun官网下载jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html 注意下载的是tar.gz结尾的文件,例如:jdk-7u21-linux-i586.tar.gz 2)下载之后,打开终端使用命令进行解压: sudo tar -zxvf jdk-7u21-linux-i586.tar.gz 回车后需要输入登陆密码,注意输入的密码是看不到的,你输入后回车就行 我下载的jdk是:jdk-7

Spring aop的实现方式

Spring 实现AOP是依赖JDK动态代理和CGLIB代理实现的.    JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理.    CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类.CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强. 如果目标对象是接口类,适合使用JDK的方式生成代理对象,当没有接口时,将采用cglib中的方