通过HTTP访问网络资源
2014-08-12 23:20
323 查看
添加访问网络的权限:<uses-permission android:name="android.permission.INTERNET"/>
package com.shz.imageviewer; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import android.os.Build; public class MainActivity extends Activity { private ImageView iv; private EditText txtPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.iv = (ImageView) this.findViewById(R.id.iv); this.txtPath = (EditText) this.findViewById(R.id.txtPath); } // Android新版系统中不允许UI处理比较耗时的操作(ANR),如果有耗时操作,可以通过开启一个子线程去处理; // 只有UI线程可以更新view对象。 // 如果有多个子线程更新UI,更新UI完毕后,检查这个更新的操作是否在主线程的代码中执行的, // 如果是主线程,则不会有问题 // 如果不是主线程,则会抛出异常:CalledFromWrongThreadException // 1.定义一个handler消息处理器 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: Bitmap bitmap = (Bitmap)msg.obj; iv.setImageBitmap(bitmap); break; case 2: Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_LONG).show(); break; default: break; } } }; private void sendMessage(int what,Object obj) { Message msg = new Message(); msg.what = what; msg.obj = obj; handler.sendMessage(msg); } public void click(View view) { final String path = this.txtPath.getText().toString().trim(); if (TextUtils.isEmpty(path)) { return; } // 2.开启一个子线程获取网络图片资源数据 new Thread(){ public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(10000); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"); int code = conn.getResponseCode(); if ( code == 200) { Bitmap bitmap = BitmapFactory.decodeStream(conn.getInputStream()); // 3.利用handler消息处理器发送一条消息到主线程的MessageQueue消息队列中,主线程中 // 有一个消息轮询器Looper,此Looper会去不断的轮询MQ中的消息并 // 交给handler的handleMessage()方法去处理 sendMessage(1, bitmap); } else { sendMessage(2, "获取图片失败"); } } catch (Exception e) { e.printStackTrace(); sendMessage(2, "获取图片失败"); } }; }.start(); } }
相关文章推荐
- 通过HTTP获取网络资源
- android通过 httpClient 的post访问 网络数据
- Httpclient通过代理访问网络
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
- 10_Android中通过HttpUrlConnection访问网络,Handler和多线程使用,读取网络html代码并显示在界面上,ScrollView组件的使用
- [转]深入Android通过Apache HTTP访问HTTP资源
- Android 通过HTTP获取网络资源
- 深入Android通过Apache HTTP访问HTTP资源(一)(转)
- 通过 httpurlconnection 访问网络设置imageview
- 【Android开发】网络编程及Internet应用-通过HTTP访问网络
- Android通过Apache HTTP访问HTTP资源
- 深入Android通过Apache HTTP访问HTTP资源
- 通过HTTP获取网络资源
- 深入Android通过Apache HTTP访问HTTP资源(二)(转)
- Android开发进阶(四)--深入Android通过Apache HTTP访问HTTP资源
- Android通过Apache HTTP访问HTTP资源
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
- crawler_基础之_java.net.HttpURLConnection 访问网络资源
- Android网络编程之使用HTTP访问网络资源
- 使用Java创建rest 服务 通过HTTP请求访问资源