Android基础之HttpUrlConnection小案例
来源:互联网 发布:edg网络黄金 编辑:程序博客网 时间:2024/05/22 05:17
URLConnection的子类HttpURLConnection被广泛用于Android网络客户端编程,它与apache HttpClient是两种主要的客户端实现方式,google官方推荐使用HttpURLConnection.
URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。
URL请求的类别:
分为二类,GET与POST请求。二者的区别在于:
a. get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, b. post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
这个案例就简单演示一下打开网页,以及下载图片
效果图:
获取网页:
public class HttpThreadPic extends Thread {private String url; private WebView myWebView; private Handler myHandler; @Override public void run() { try { URL httpUrl=new URL(url); try { //创建一个HttpURLConnection对象或HttpsURLConnection对象 HttpURLConnection connection=(HttpURLConnection) httpUrl.openConnection(); //设置网络请求超时时间 connection.setReadTimeout(5000); //设置请求方式 connection.setRequestMethod("GET"); final StringBuffer buffer=new StringBuffer(); //获取网页信息 BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream())); String str; //将信息存入缓冲区 while((str=reader.readLine())!=null){ buffer.append(str); System.out.println(str); } //将网页信息加载到WebView; myHandler.post(new Runnable() { @Override public void run() { myWebView.loadData(buffer.toString(), "text/html;charset=utf-8", null); } }); } catch (IOException e) { System.out.println("1"); e.printStackTrace(); } } catch (MalformedURLException e) { System.out.println("2"); e.printStackTrace(); } }//初始化 public HttpThreadPic(String url, WebView myWebView, Handler myHandler) { super(); this.url = url; this.myWebView = myWebView; this.myHandler = myHandler; }}
下载图片:
public class HttpThread extends Thread { private String url; private ImageView myImageView; private Handler myHandler; private File picfile; @Override public void run() { try { URL httpUrl=new URL(url); try { //创建一个HttpURLConnection对象或HttpsURLConnection对象 HttpURLConnection connection=(HttpURLConnection) httpUrl.openConnection(); //设置网络请求超时时间 connection.setReadTimeout(5000); //设置请求方式 connection.setRequestMethod("GET"); //设置是否从httpUrlConnection读入,默认情况下是true; connection.setDoInput(true); InputStream stream=connection.getInputStream(); FileOutputStream outputStream = null; String filename=String.valueOf(System.currentTimeMillis()); //判断SD卡是否存在 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //获得SDK的一个目录 File parent=Environment.getExternalStorageDirectory(); picfile=new File(parent, filename); outputStream=new FileOutputStream(picfile); } byte[] bs=new byte[2*1024]; int len; if (outputStream!=null) { while((len=stream.read(bs))!=-1){ outputStream.write(bs, 0, len); } } final Bitmap bitmap=BitmapFactory.decodeFile(picfile.getAbsolutePath()); myHandler.post(new Runnable() { @Override public void run() { myImageView.setImageBitmap(bitmap); } }); } catch (IOException e) { System.out.println("1"); e.printStackTrace(); } } catch (MalformedURLException e) { System.out.println("2"); e.printStackTrace(); } } public HttpThread(String url, ImageView myImageView, Handler myHandler) { super(); this.url = url; this.myImageView = myImageView; this.myHandler = myHandler; }}
Activity的代码:
public class MainActivity extends ActionBarActivity implements OnClickListener { private Button bt_web, bt_pic; private WebView myWebview; private Handler handler = new Handler(); private ImageView myImageView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //传入网址 new HttpThreadPic("https://www.baidu.com/", myWebview, handler).start(); new HttpThread("http://img4.imgtn.bdimg.com/it/u=705115385,3322141037&fm=21&gp=0.jpg", myImageView, handler).start(); } private void initView() { myWebview = (WebView) findViewById(R.id.http_web); myImageView = (ImageView) findViewById(R.id.http_image); bt_pic = (Button) findViewById(R.id.http_bt_pic); bt_web = (Button) findViewById(R.id.http_bt_web); bt_pic.setOnClickListener(this); bt_web.setOnClickListener(this); } //隐藏内容,显示内容 public void onClick(View v) { switch (v.getId()) { case R.id.http_bt_web: myWebview.setVisibility(View.VISIBLE); myImageView.setVisibility(View.GONE); break; case R.id.http_bt_pic: myWebview.setVisibility(View.GONE); myImageView.setVisibility(View.VISIBLE); break; default: break; } }}
0 0
- Android基础之HttpUrlConnection小案例
- Android 基础之网络技术-HttpURLConnection
- Android网络基础之HttpClient与HttpURLConnection
- 05 JavaScript基础之--数组小案例
- Android HttpURLConnection 基础使用
- Android---HttpURLConnection基础
- Android基础:HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- Android之HttpURLConnection编程
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- oc中数组排序方法
- 关于PHP程序员解决问题的能力
- Linux kernel 分析之十八:设计模式-文件系统与抽象工厂
- Linux下Nagios的安装与配置
- 启动第二个Activity
- Android基础之HttpUrlConnection小案例
- Postgres数据库的进程结构---菜鸟的PG分析之路
- 学习CSS(7)
- JAVA基础之IO流
- 通过“分布式系统的8大谬误”反思APP的设计 第二篇 谬误2:网络没有时延
- Shiro源码分析之两种Session的方式
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- 给部分培训学生的建议
- iOS中UITableview实现跨区域拖动效果的实现