1 package com.hanqi.cunchu; 2 3 import android.app.ProgressDialog; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 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.ObjectStreamClass; 12 import java.io.OutputStream; 13 import java.net.URL; 14 15 import javax.net.ssl.HttpsURLConnection; 16 17 public class TestActivity3 extends AppCompatActivity { 18 EditText et_2; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_test3); 24 et_2=(EditText)findViewById(R.id.et_2); 25 } 26 //显示结果 27 String STR = ""; 28 //jdk的get方式 29 public void bt1_onclick(View v) { 30 //1-启动进度对话框 31 final ProgressDialog PD = ProgressDialog.show(this, null, "请稍等. . . "); 32 //2-启动子线程,访问远程服务器 33 new Thread() { 34 @Override 35 public void run() { 36 //访问远程服务器 37 //JDK-get 38 HttpsURLConnection HUC = null; 39 try { 40 //1-构造URL对象 41 URL url = new URL("http://192.168.31.56:81/index.asp?name=tom&password=456"); 42 //2-得到HttpURLConnection 43 HUC = (HttpsURLConnection) url.openConnection(); 44 //3-设置HttpURLConnection 45 HUC.setRequestMethod("GET"); 46 HUC.setConnectTimeout(3000); 47 HUC.setReadTimeout(3000); 48 //4-连接远程服务器 49 HUC.connect(); 50 //5-接收响应报文的状态 51 int code = HUC.getResponseCode(); 52 //6-判断响应状态码,是否等于200 53 if (code == 200) { 54 //7-处理 55 56 //1-接收数据 57 58 //2-得到数据流 59 InputStream is = HUC.getInputStream(); 60 //读到的数据 61 byte[] b = new byte[1024]; 62 //读到的数据长度 63 int i = 0; 64 while ((i = is.read(b)) > 0) { 65 //接收字符串 66 STR += new String(b, 0, i); 67 } 68 is.close(); 69 70 } else { 71 STR = "响应错误,错误码=" + code; 72 } 73 //显示结果,不能直接跨线程访问主线程的视图 74 runOnUiThread(new Runnable() { 75 @Override 76 public void run() { 77 et_2.setText(STR); 78 } 79 }); 80 } catch (Exception e) { 81 e.printStackTrace(); 82 } finally { 83 //8-关闭连接和进度对话框 84 //释放资源 85 if (HUC != null) { 86 HUC.disconnect(); 87 } 88 //支持跨线程访问 89 PD.dismiss(); 90 } 91 } 92 }.start(); 93 } 94 //jdk的POST方式 95 public void bt2_onclick(View v) 96 { 97 //1-启动进度对话框 98 final ProgressDialog PD=ProgressDialog.show(this, null, "请稍等. . . "); 99 //2-启动子线程,访问远程服务器 100 new Thread() 101 { 102 @Override 103 public void run() { 104 //访问远程服务器 105 //JDK-get 106 HttpsURLConnection HUC = null; 107 try { 108 //1-构造URL对象 109 URL url = new URL("http://192.168.31.56:81/index.asp"); 110 //2-得到HttpURLConnection 111 HUC = (HttpsURLConnection)url.openConnection(); 112 //3-设置HttpURLConnection 113 HUC.setRequestMethod("POST"); 114 HUC.setConnectTimeout(3000); 115 HUC.setReadTimeout(3000); 116 //4-连接远程服务器,输出流 117 HUC.connect(); 118 //数据放到请求体里面 119 //1-得到输出流 120 OutputStream os=HUC.getOutputStream(); 121 String outStr="name=tom&password=123"; 122 os.write(outStr.getBytes("UTF-8")); 123 Log.e("TAG","发送. . ."); 124 //5-接收响应报文的状态 125 int code = HUC.getResponseCode(); 126 //6-判断响应状态码,是否等于200 127 if (code==200) 128 { 129 //7-处理 130 131 //1-接收数据 132 133 //2-得到数据流,输入流 134 InputStream is=HUC.getInputStream(); 135 //读到的数据 136 byte[]b=new byte[1024]; 137 //读到的数据长度 138 int i = 0; 139 while((i=is.read(b))>0) 140 { 141 //接收字符串 142 STR+=new String(b,0,i); 143 } 144 is.close(); 145 os.close(); 146 } 147 else 148 { 149 STR="响应错误,错误码="+code; 150 } 151 //显示结果,不能直接跨线程访问主线程的视图 152 runOnUiThread(new Runnable() { 153 @Override 154 public void run() { 155 et_2.setText(STR); 156 } 157 }); 158 } catch (Exception e) { 159 e.printStackTrace(); 160 } 161 finally { 162 //8-关闭连接和进度对话框 163 //释放资源 164 if (HUC!=null) { 165 HUC.disconnect(); 166 } 167 //支持跨线程访问 168 PD.dismiss(); 169 } 170 } 171 }.start(); 172 } 173 }
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context="com.hanqi.cunchu.TestActivity3"> 9 <LinearLayout 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:orientation="horizontal"> 13 <Button 14 android:layout_width="0dp" 15 android:layout_weight="1" 16 android:layout_height="wrap_content" 17 android:text="JDK-GET方式" 18 android:onClick="bt1_onclick"/> 19 <Button 20 android:layout_width="0dp" 21 android:layout_weight="1" 22 android:layout_height="wrap_content" 23 android:text="JDK-POST方式" 24 android:onClick="bt2_onclick"/> 25 </LinearLayout> 26 <EditText 27 android:layout_width="match_parent" 28 android:layout_height="200dp" 29 android:id="@+id/et_2"/> 30 </LinearLayout>
时间: 2024-10-14 18:51:53