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