网络基础框架
来源:互联网 发布:书生阅读器windows版 编辑:程序博客网 时间:2024/06/10 16:28
1、学习了Android网络基本框架,了解了UI的get和post用法的区别
2、AsyncTask异步任务类,必须通过此类来实现
3、使用这两种用法获取内容
以下程序为get和post方法的具体使用:
package com.example.administrator.jreduch07;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpActivity extends AppCompatActivity { private EditText et; private Button search; private Button search1; private TextView show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http); et=(EditText)findViewById(R.id.et); search=(Button)findViewById(R.id.search); search1=(Button)findViewById(R.id.search1); show=(TextView)findViewById(R.id.show); search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url="http://192.168.23.1:8080/HttpTest/index.jsp?" +"option=getUser&uName=jerehedu"; new MyGetJob().execute(url); } }); search1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String[] arg=new String[2]; arg[0]="http://192.168.23.1:8080/HttpTest/index.jsp"; arg[1]="option=getUser&uName=jerehedu"; new MyPostJob().execute(arg); } }); } public class MyPostJob extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { HttpURLConnection con = null; InputStream is = null; StringBuilder sbd = new StringBuilder(); try { URL url = new URL(strings[0]); con = (HttpURLConnection) url.openConnection(); con.setConnectTimeout(5*1000); con.setReadTimeout(5*1000); con.setRequestMethod("POST"); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestProperty("Charset","UTF-8"); con.setRequestProperty("Content-type","application/x-www-form-urlencoded"); //params应该是这样的样式 => option=getUser&uName=jerehedu String params = strings[1]; OutputStream os = con.getOutputStream(); os.write(params.getBytes()); os.flush(); os.close(); if(con.getResponseCode()==200){ is = con.getInputStream(); int next = 0 ; byte[] b = new byte[1024]; while ((next = is.read(b))>0){ sbd.append(new String(b,0,next)); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(is!=null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if(con!=null){ con.disconnect(); } } return sbd.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); show.setText("POST请求结果:"+s); } } /* * AsyncTask异步任务类(耗时的操作)有五个方法(主线程3个方法,子线程2个方法) * 异步任务类的第一个参数会传到doInBackgroung方法中 * 第三个参数是 * #指定doInBackgroung的返回值 * #doInBackgroung的返回值会被onPostExecute接收 * */ public class MyGetJob extends AsyncTask<String,Void,String >{ //onPreExecute在主线程中执行命令,进度条的初始化 @Override protected void onPreExecute() { super.onPreExecute(); } // doInBackground在子线程中执行命令 @Override protected String doInBackground(String... strings) { HttpURLConnection con=null;//访问网络 InputStream is=null; StringBuilder sbd=new StringBuilder(); try { URL url=new URL(strings[0]); con= (HttpURLConnection) url.openConnection(); con.setConnectTimeout(5*1000); con.setReadTimeout(5*1000); /*http 响应吗 * 200:成功 * 404:未找到 * 500:发生错误 */ if(con.getResponseCode()==200){ is=con.getInputStream(); int next=0; byte[] bt=new byte[1024]; while((next=is.read(bt))>0){ sbd.append(new String(bt,0,next)); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } if(con!=null){ con.disconnect(); } } return sbd.toString(); } // onPostExecute在UI线程中执行命令 @Override protected void onPostExecute(String s) { super.onPostExecute(s); show.setText(s); } }}
搜索
1 0
- 网络基础框架
- Retrofit网络请求框架基础操作
- 网络请求框架OkHttp基础用法
- Android 网络框架之 OkHttp 基础使用
- tensorflow框架基础之简单网络训练
- 网络请求框架OkHttp基础用法
- Libnids库-网络入侵检测的基础框架
- 【Android 基础】Android热门网络框架使用详解-Volley
- BIOS/UEFI基础——UEFI网络框架之概述
- 网络基础技术:从HttpURLConnection到Volley框架
- BIOS/UEFI基础——UEFI网络框架之UNDI
- BIOS/UEFI基础——UEFI网络框架之SNP
- BIOS/UEFI基础——UEFI网络框架之MNP
- BIOS/UEFI基础——UEFI网络框架之ARP
- BIOS/UEFI基础——UEFI网络框架之TCP4
- BIOS/UEFI基础——UEFI网络框架之MNP2
- BIOS/UEFI基础——UEFI网络框架之IP4
- python 网络框架twisted基础学习及详细讲解
- c++ string类实现
- MySQL集群系列1:2台机器搭建双主集群
- Android Fragment的子fragment之间切换保存状态遇到的坑
- 【机房收费】--VB让报表有生命
- sublime text3常见插件的安装
- 网络基础框架
- ios 判断图片类型是否为PNG
- SecureCRT-v8.0.2的安装与破解
- 最长上升子序列的两种算法
- MongoDB小结33 - 聚合管道【$unwind】
- 264. Ugly Number II**
- Hbase 提高写入效率之 预分区
- MySQL集群系列2:通过keepalived实现双主集群读写分离
- Kafka深度解析